Преобразуйте короткий в байт [] в Java

Как я могу преобразовать a short (2 байта) к массиву байтов в Java, например.

short x = 233;
byte[] ret = new byte[2];

...

это должно быть что-то вроде этого. Но не уверенный.

((0xFF << 8) & x) >> 0;

Править:

Также можно использовать:

java.nio.ByteOrder.nativeOrder();

Обнаружить, чтобы добраться, является ли собственный разрядный порядок большим или маленьким. Кроме того, следующий код взят от java.io.Bits который делает:

  • байт (массив/смещение) к булевской переменной
  • массив байтов для обугливания
  • массив байтов к короткому
  • массив байтов к интервалу
  • массив байтов для плавания
  • массив байтов к долго
  • массив байтов для удвоения

И стих визы.

49
задан Hugh 19 March 2010 в 07:43
поделиться

3 ответа

ret[0] = (byte)(x & 0xff);
ret[1] = (byte)((x >> 8) & 0xff);
73
ответ дан 7 November 2019 в 11:25
поделиться

Разобрался, это:

public static byte[] toBytes(short s) {
    return new byte[]{(byte)(s & 0x00FF),(byte)((s & 0xFF00)>>8)};
}
7
ответ дан 7 November 2019 в 11:25
поделиться

Это зависит от того, как вы хотите это представить:

  • с прямым порядком байтов или прямым порядком байтов? Это определит, в каком порядке вы разместите байты.

  • Хотите ли вы использовать дополнение до 2 или какой-либо другой способ представления отрицательного числа? Вы должны использовать схему, которая имеет тот же диапазон, что и short в java, чтобы иметь сопоставление 1 к 1.

Для прямого порядка байтов преобразование должно производиться в следующем порядке: ret [0] = x / 256; ret [1] = x% 256;

3
ответ дан 7 November 2019 в 11:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: