在Java中将StringBuffer转换为字节数组
我有一个StringBuffer,在Java中将StringBuffer转换为字节数组,java,bytearray,stringbuffer,Java,Bytearray,Stringbuffer,我有一个StringBuffer,strbuf=16165607020000002020001000000009E52 我想转换成如下所示的字节数组: byte[] byte_array=new byte[] {(byte)0x16,(byte)0x16,(byte)0x56,(byte)0x07, (byte)0x02,(byte)0x00,(byte)0x00,(byte)0x00, (byte)0x00,(byte)0x20,(byte)0x20,(byte)0x20, (b
strbuf=16165607020000002020001000000009E52代码>
我想转换成如下所示的字节数组:
byte[] byte_array=new byte[]
{(byte)0x16,(byte)0x16,(byte)0x56,(byte)0x07,
(byte)0x02,(byte)0x00,(byte)0x00,(byte)0x00,
(byte)0x00,(byte)0x20,(byte)0x20,(byte)0x20,
(byte)0x20,(byte)0x20,(byte)0x01,(byte)0x00,
(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x9E,(byte)0x52};
是否需要将strbufstrbuf
转换为hex
字符串,然后执行getBytes()
?
解决这个问题的正确方法是什么?您可以尝试以下方法
final String longHex = "161656070200000000202020202001000000009E52";
byte[] bytes = new BigInteger(longHex, 16).toByteArray();
System.out.println(Arrays.toString(bytes));
印刷品
[22, 22, 86, 7, 2, 0, 0, 0, 0, 32, 32, 32, 32, 32, 1, 0, 0, 0, 0, -98, 82]
让我们把这个问题分解一下,然后在这里反向工作
你知道吗
- 如何将
int
转换为字节
(假设前者在范围内)
- 如何将两个字符的
字符串
转换为int
- 如何将一个长字符串转换成两个字符的块
我怀疑您能够单独完成这些任务中的任何一项。简单地按顺序(按相反的顺序)执行所有这些操作将产生您正在寻找的解决方案
字符串longHex=“…”;
byte[]数组=新字节[longHex.length()/2];
对于(int i=0;i不要问我知道什么,我想最好你用你的“系统”来解释我们也许吧。但是,仅仅给你一段代码就可以让你复制粘贴,继续前进,然后在下次陷入困境时再回来。相反,引导你自己完成实现解决方案所需的步骤更耗时,但这意味着你将来可以自己解决类似的问题,这会让你成为一名更好的开发人员我不知道该说什么。因为我找不到解决方案,所以我发布了这个问题。非常感谢你。。
String longHex = "....";
byte[] array = new byte[longHex.length() / 2];
for (int i=0; i<array.length; i++){
Byte byte = Byte.parseByte(longHex.substring(i*2, i*2+2), 16);
array[i] = byte;
}