Как я могу преобразовать a short
(2 байта) к массиву байтов в Java, например.
short x = 233;
byte[] ret = new byte[2];
...
это должно быть что-то вроде этого. Но не уверенный.
((0xFF << 8) & x) >> 0;
Править:
Также можно использовать:
java.nio.ByteOrder.nativeOrder();
Обнаружить, чтобы добраться, является ли собственный разрядный порядок большим или маленьким. Кроме того, следующий код взят от java.io.Bits
который делает:
И стих визы.
ret[0] = (byte)(x & 0xff);
ret[1] = (byte)((x >> 8) & 0xff);
Разобрался, это:
public static byte[] toBytes(short s) {
return new byte[]{(byte)(s & 0x00FF),(byte)((s & 0xFF00)>>8)};
}
Это зависит от того, как вы хотите это представить:
с прямым порядком байтов или прямым порядком байтов? Это определит, в каком порядке вы разместите байты.
Хотите ли вы использовать дополнение до 2 или какой-либо другой способ представления отрицательного числа? Вы должны использовать схему, которая имеет тот же диапазон, что и short в java, чтобы иметь сопоставление 1 к 1.
Для прямого порядка байтов преобразование должно производиться в следующем порядке: ret [0] = x / 256; ret [1] = x% 256;