0

我有一个 11 字节的十六进制字符串"0017333032CD4900186F41"。我必须将此字符串转换为字节数组,并且做得很好并得到正确的结果。但是,按照特定的消息格式,我想将此十六进制字符串转换为大小为 16 而不是 11 的字节数组。这可能吗?

我试过hex.getBytes("UTF-8")了,这给了我一个大小为 32 的数组。是否可以将 11 字节十六进制字符串作为 16 字节数组?

此要求在 Java 中适用于 BlackBerry 应用程序。这已在 Android 和 iPhone 中成功实现。Android 正在使用ByteConverterBasic4Android 中的库来获得所需的结果:

Dim data() As Byte
data = Bconv.HexToBytes(data_hex)
4

2 回答 2

3

十六进制字符串表示一个有 2 位数字的字节 (16² = 256)。

所以用零填充字符串data_hex到右边,直到它的长度为 2*16 = 32。然后进行 HexToBytes 转换。

于 2013-01-07T06:35:28.080 回答
2

尝试

String s = "0017333032CD4900186F41";
BigInteger bi = new BigInteger(s, 16);
byte[] a1 = bi.toByteArray();
byte[] a2 = new byte[16];
System.arraycopy(a1, 0, a2, 16 - a1.length, a1.length);
于 2013-01-07T06:37:49.640 回答