1

如何在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下完成同样的事情,但我似乎找不到明显的解决方法。

4

2 回答 2

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.
于 2013-04-01T20:51:30.427 回答
0

如果你使用 Guava,有一个方便的Longs.toByteArray。它只是上面 John 的 ByteBuffer 答案的包装,但如果您已经使用 Guava,阅读起来会稍微“更好”。

于 2013-04-02T01:48:41.577 回答