如何在Java中初始化字节数组?

我必须在Java中以字节数组形式存储一些常量值(UUID),并且我想知道初始化这些静态数组的最佳方法是什么。这就是我目前的做法,但我觉得必须有更好的方法。

private static final byte[] CDRIVES = new byte[] { (byte)0xe0, 0x4f, (byte)0xd0,

0x20, (byte)0xea, 0x3a, 0x69, 0x10, (byte)0xa2, (byte)0xd8, 0x08, 0x00, 0x2b,

0x30, 0x30, (byte)0x9d };

private static final byte[] CMYDOCS = new byte[] { (byte)0xba, (byte)0x8a, 0x0d,

0x45, 0x25, (byte)0xad, (byte)0xd0, 0x11, (byte)0x98, (byte)0xa8, 0x08, 0x00,

0x36, 0x1b, 0x11, 0x03 };

private static final byte[] IEFRAME = new byte[] { (byte)0x80, 0x53, 0x1c,

(byte)0x87, (byte)0xa0, 0x42, 0x69, 0x10, (byte)0xa2, (byte)0xea, 0x08,

0x00, 0x2b, 0x30, 0x30, (byte)0x9d };

...

and so on

有什么我可以使用的,虽然效率可能较低,但看起来会更干净?例如:

private static final byte[] CDRIVES =

new byte[] { "0xe04fd020ea3a6910a2d808002b30309d" };

回答:

使用将十六进制字符串转换为的函数byte[],您可以执行

byte[] CDRIVES = hexStringToByteArray("e04fd020ea3a6910a2d808002b30309d");

我建议您在使用Java将十六进制转储的字符串表示形式转换为字节数组中使用 DaveL定义的功能吗?

我将其插入此处以获得最大的可读性:

public static byte[] hexStringToByteArray(String s) {

int len = s.length();

byte[] data = new byte[len / 2];

for (int i = 0; i < len; i += 2) {

data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)

+ Character.digit(s.charAt(i+1), 16));

}

return data;

}

如果让CDRIVES staticfinal,则性能下降无关紧要。

以上是 如何在Java中初始化字节数组? 的全部内容, 来源链接: utcz.com/qa/426977.html

回到顶部