powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / intToByteArray на 5 ячеек
5 сообщений из 5, страница 1 из 1
intToByteArray на 5 ячеек
    #38680669
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день уважаемые форумчане.

Как перевести int b bytearray для 5ти ячеек.

В интернете куча примеров для 4 ячеек.
(И мы сами используем такой код)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    public static byte[] intToByteArray1(int value) {
            byte[] b = new byte[4];
            for (int i = 0; i < 4; i++) {
                int offset = (b.length - 1 - i) * 8;
                b[i] = (byte) ((value >>> offset) & 0xFF);
            }
            return b;
        }
    

или

    public static final byte[] intToByteArray(int value) {
        return new byte[] {
                (byte)(value >>> 24),
                (byte)(value >>> 16),
                (byte)(value >>> 8),
                (byte)value};
    }


Всё для array[4] работает "пучком"

Но как только нужно array[5] уже не работает
делаю по аналогии

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 public static byte[] intToByteArray1(int value) {
            byte[] b = new byte[5];
            for (int i = 0; i < 5; i++) {
                int offset = (b.length - 1 - i) * 8;
                b[i] = (byte) ((value >>> offset) & 0xFF);
            }
            return b;
        }
    

или

    public static final byte[] intToByteArray(int value) {
        return new byte[] {
           (byte)(value >>> 32),
                (byte)(value >>> 24),
                (byte)(value >>> 16),
                (byte)(value >>> 8),
                (byte)value};
    }



Получается лажа.
Код: java
1.
2.
3.
4.
        String text="99999";
       int in=Integer.parseInt(text);
      byte[] price=intToByteArray(in);
    System.out.println(bytesToHexString( price)); 



Получаем
9f 00 01 86 9f

вместо

00 00 01 86 9f

И во всём интернете, как сговорились все примеры для 4х ячеек.(А тут блин фискальный регистратор по протоколу требует 5 байт...и хотелось бы не изобретать велосипед и получить оптимальный проверенный код)
...
Рейтинг: 0 / 0
intToByteArray на 5 ячеек
    #38680672
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
int - 4 байта. Надо бы знать. Копируем значимые 4 байта в byte[4] и задача сводится к решаемой.
...
Рейтинг: 0 / 0
intToByteArray на 5 ячеек
    #38680674
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Блин ,Сппсибо :=))))
Оказалось надо просто int в long перевести


public static final byte[] intToByteArray(long value) {
return new byte[] {
(byte)(value >>> 32) ,
(byte)(value >>> 24),
(byte)(value >>> 16),
(byte)(value >>> 8),
(byte)value};
}

Всё заработало.
...
Рейтинг: 0 / 0
intToByteArray на 5 ячеек
    #38680690
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,

Рекомендую подучить ByteBuffer
http://stackoverflow.com/a/7619111/3492708
...
Рейтинг: 0 / 0
intToByteArray на 5 ячеек
    #38680840
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,

Код: java
1.
2.
3.
public static byte[] intToByteArray(int value) {
    return java.math.BigInteger.valueOf(value).toByteArray();
}	
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / intToByteArray на 5 ячеек
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]