У меня есть сообщениеJava шестнадцатеричного
static int[] message = {
0x01, 0x10, 0x00,
0x01, // port addres 01 - 08
0x00, 0x01, 0x02,
0x06, 0x00,
0xA4, 0x21
};
Я знаю, что данные правы, так как из Я пишу их COM-порт с RxTx, и я получил правильную реакцию HW
Я знаю, что 0x01
значение 1
, и отправлено действительно как 01
(это два бита, четверть байта)
Когда мне нужно настроить сообщение, генерирует значения, подобные этому?
message[index] = 1 & 0xff
Я вижу выход этого фрагмента, и это выглядит правильно
for (int i = 0; i < 255; i++) {
System.out.println(i & 0xff);
}
Есть ли лист вы бы рекомендовать мне читать?
хранит эти цифры в int
права, так как мы не можем использовать byte (-128, +127)
для значений до <0x00, 0xFF>
диапазона
Вы можете использовать байты. Но вы должны указать каждое значение байту: 'byte [] message = {(byte) 0xff};' –
* "Я знаю, что OxO1 является 1 значением и отправляется как 01 (это два бита)" * Нет, если только вы делаете что-то, чтобы это произошло. Java 'int' - это 32-битное значение ([ссылка] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html)). Просто потому, что значение не требует * все эти биты не означает, что они не отправляются.Размер того, что вы отправляете, может быть ограничен тем, как вы его отправляете, но, учитывая другие значения, которые вы цитируете, вы можете быть уверены, что отправляете по меньшей мере восемь бит. –
Возможно, вам стоит подумать об использовании ByteBuffer – fge