从java中的多字节变量中获取单个字节

Get single bytes from multi-byte variable in java

本文关键字:获取 单个 变量 字节 多字节 java      更新时间:2023-10-16

如何在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下完成同样的工作,但我似乎找不到一个明显的解决方案。

使用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.

如果您使用Guava,则有一个方便的long . tobytearray。它只是上面John的ByteBuffer答案的一个包装,但是如果您已经使用了Guava,那么它读起来会稍微"好一点"。