Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 как записать однобайтовый массив значений от 0..255 (а не как -128..127)?  [new]
Belotsky Serge
Member

Откуда: Гомель
Сообщений: 312
Добрый день!

byte[] operInfoKSU = {0x01,0xA6,0x00,0x2A,0x00,0xF4,0x27,0x0F,0x01,0xFE,0x00,0x4F,0x00,0x59,0x01,0xC5,0x00,0x00};

Понятно, что можно 0xA6 перевести в число со знаком.
Можно конечно использовать и short, но мне этот массив потом через
 System.arraycopy();
копировать в другой массив.
А short будет вставлять ненужные нулевые байты.
11 ноя 20, 14:43    [22230154]     Ответить | Цитировать Сообщить модератору
 Re: как записать однобайтовый массив значений от 0..255 (а не как -128..127)?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
Belotsky Serge
А short будет вставлять ненужные нулевые байты.
подробнее, чем этомешает или не нравится?
11 ноя 20, 14:56    [22230164]     Ответить | Цитировать Сообщить модератору
 Re: как записать однобайтовый массив значений от 0..255 (а не как -128..127)?  [new]
Belotsky Serge
Member

Откуда: Гомель
Сообщений: 312
PetroNotC Sharp,
А short 2 байта, разве нет.
Поэтому запись
short[] operInfoKSU = {0x01,0xA6,0x00,0x2A,0x00,0xF4,0x27,0x0F,0x01,0xFE,0x00,0x4F,0x00,0x59,0x01,0xC5,0x00,0x00};
на самом деле в памяти будет выглядеть примерно так: 0x01 00 A6 00 00 00 F4 00 27 00 и т.д.
И если копировать это в другой байтовый массив через System.ArrayCopy, то я опасаюсь, что получу ненужные нулевые байты.
11 ноя 20, 15:12    [22230174]     Ответить | Цитировать Сообщить модератору
 Re: как записать однобайтовый массив значений от 0..255 (а не как -128..127)?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
Belotsky Serge,
Тебе жалко две строки копирования написать чтобы продемонстрировать проблему?
Программист?
11 ноя 20, 15:18    [22230176]     Ответить | Цитировать Сообщить модератору
 Re: как записать однобайтовый массив значений от 0..255 (а не как -128..127)?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
Belotsky Serge
опасаюсь, что получу
допуск на 220 вольт получил?))
11 ноя 20, 15:19    [22230179]     Ответить | Цитировать Сообщить модератору
 Re: как записать однобайтовый массив значений от 0..255 (а не как -128..127)?  [new]
Belotsky Serge
Member

Откуда: Гомель
Сообщений: 312
PetroNotC Sharp
Belotsky Serge
опасаюсь, что получу
допуск на 220 вольт получил?))


Надо проверить. В Дельфи 100% получу нулевые байты. Как оно будет в Java - не знаю. Как проверю - отпишусь.
11 ноя 20, 15:26    [22230186]     Ответить | Цитировать Сообщить модератору
 Re: как записать однобайтовый массив значений от 0..255 (а не как -128..127)?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
Belotsky Serge,

Другое дело.
Дельфи напрямую с памятью работает. А java нет.
Удачи!
11 ноя 20, 15:30    [22230188]     Ответить | Цитировать Сообщить модератору
 Re: как записать однобайтовый массив значений от 0..255 (а не как -128..127)?  [new]
Belotsky Serge
Member

Откуда: Гомель
Сообщений: 312
PetroNotC Sharp
Belotsky Serge,

Другое дело.
Дельфи напрямую с памятью работает. А java нет.
Удачи!


Компилятор выдает предупреждение (см. аттач). Вот и у меня сомнения, что все пройдет гладко.

К сообщению приложен файл. Размер - 49Kb
11 ноя 20, 15:37    [22230191]     Ответить | Цитировать Сообщить модератору
 Re: как записать однобайтовый массив значений от 0..255 (а не как -128..127)?  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9249
Belotsky Serge

Компилятор выдает предупреждение (см. аттач). Вот и у меня сомнения, что все пройдет гладко.

даже если и будет работать (я бы сначала проверил)
как минимум выглядит это коряво

IMHO
11 ноя 20, 15:39    [22230193]     Ответить | Цитировать Сообщить модератору
 Re: как записать однобайтовый массив значений от 0..255 (а не как -128..127)?  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9249
IMHO

1. другого варианта в гугле не нашел (((

byte[] operInfoKSU = {0x01,(byte)0xA6,0x00,0x2A,0x00,(byte)0xF4,0x27,0x0F,0x01,(byte)0xFE,0x00,0x4F,0x00,0x59,0x01,(byte)0xC5,0x00,0x00};

2. System.arraycopy

Exception in thread "main" java.lang.ArrayStoreException: arraycopy: type mismatch: can not copy short[] into byte[]
11 ноя 20, 15:55    [22230211]     Ответить | Цитировать Сообщить модератору
 Re: как записать однобайтовый массив значений от 0..255 (а не как -128..127)?  [new]
Belotsky Serge
Member

Откуда: Гомель
Сообщений: 312
Leonid Kudryavtsev
IMHO

1. другого варианта в гугле не нашел (((

byte[] operInfoKSU = {0x01,(byte)0xA6,0x00,0x2A,0x00,(byte)0xF4,0x27,0x0F,0x01,(byte)0xFE,0x00,0x4F,0x00,0x59,0x01,(byte)0xC5,0x00,0x00};

2. System.arraycopy

Exception in thread "main" java.lang.ArrayStoreException: arraycopy: type mismatch: can not copy short[] into byte[]

Ваше изменение работает!
Я тоже получил Exception при выполнении копирования short[] в byte[].

Всем спасибо!
11 ноя 20, 16:19    [22230228]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить