2012-03-06 4 views
2

Я нашел this решение, но, похоже, для Java SE. Я не могу найти альтернативу функции System.out.format(). Кроме того, я изменил функцию ByteBuffer.allocate() на ByteBuffer.allocateDirect().Java целое число в байтовый массив Blackberry J2ME

byte[] bytes = ByteBuffer.allocate(4).putInt(1695609641).array(); 

    for (byte b : bytes) { 
     System.out.format("0x%x ", b); 
    } 

спасибо.

+0

Что [порядок байт] (http://en.wikipedia.org/wiki/Endianness) вы хотите? –

ответ

2

Если вы хотите network byte order аки тупоконечника порядка, который используется на протяжении сериализации и удаленного взаимодействия библиотек Явы:

static byte[] intToBytesBigEndian(int i) { 
    return new byte[] { 
    (byte) ((i >>> 24) & 0xff), 
    (byte) ((i >>> 16) & 0xff), 
    (byte) ((i >>> 8) & 0xff), 
    (byte) (i & 0xff), 
    }; 
} 
0
// 32-bit integer = 4 bytes (8 bits each) 
int i = 1695609641; 
byte[] bytes = new byte[4]; 

// big-endian, store most significant byte in byte 0 
byte[3] = (byte)(i & 0xff); 
i >>= 8; 
byte[2] = (byte)(i & 0xff); 
i >>= 8; 
byte[1] = (byte)(i & 0xff); 
i >>= 8; 
byte[0] = (byte)(i & 0xff); 
+0

исправлено с явным литом – arc

 Смежные вопросы

  • Нет связанных вопросов^_^