繁体   English   中英

将11字节的十六进制字符串转换为大小为16的字节数组

[英]Convert 11 byte hex string to byte array of size 16

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

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

BlackBerry应用程序的Java中有此要求。 这已在Android和iPhone中成功实现。 Android正在使用ByteConverter中的ByteConverter lib获得所需的结果:

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

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

因此,将字符串data_hex用零data_hex到右边,直到其长度为2 * 16 =32。然后执行HexToBytes转换。

尝试

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM