如何在java中将变量拆分为单个字节?我有例如C ++中的代码片段:
unsigned long someVar;
byte *p = (byte*)(void*) someVar; // byte being typedef unsigned char (from 0 to 255)
byte *bytes = new byte[sizeof(someVar)];
for(byte i = 0;i<sizeof(someVar);i++)
{
bytes[i] = *p++;
}
.... //do something with bytes
我想在java下完成同样的工作,但我似乎找不到明显的解决方法。
答案 0 :(得分:3)
使用ByteBuffer类有两种方法。一种是动态创建一个新的字节数组。
long value = 123;
byte[] bytes = ByteBuffer.allocate(8).putLong(value).array();
另一种是写入现有数组。
long value = 123;
byte[] bytes = new byte[8];
ByteBuffer.wrap(bytes).putLong(value);
// bytes now contains the byte representation of 123.
答案 1 :(得分:0)
如果你使用番石榴,那么便利Longs.toByteArray。它只是上面John的ByteBuffer答案的一个包装器,但是如果你已经使用了Guava,那么阅读它会更“好”。