全部
我有一个将字节数组发送到服务器的问题。
每个ID具有文本值。
private String ID = "0001";
byte STX = (byte)0x02;
byte A = (byte)0x41;
byte NUL = (byte)0x00;
byte ETX = (byte)0x03;
byte CR = (byte)0x0D;
byte LF = (byte)0x0A;
byte[] buffer = { STX, Byte.decode(ID), A, NUL, ETX, CR, LF };
我期望缓冲值
buffer [02, 48, 48, 48, 49, 65, 00, 0D, 0A]
但是缓冲区值有
buffer [02, 01, 65, 00, 0D, 0A]
如何将“ 0001”转换为[48,48,48,49],将字符串转换为十进制。
该方法Byte#decode(String)
返回单个Byte
元素,该元素作为元素添加到您的buffer
数组中。
字符串"0001"
表示八进制值0001
是1
。
您将无法在{ }
初始化表示法中使用一个变量添加多个数组元素。
相反,您可以执行以下操作
String ID = "0001";
byte STX = (byte) 0x02;
byte A = (byte) 0x41;
byte NUL = (byte) 0x00;
byte ETX = (byte) 0x03;
byte CR = (byte) 0x0D;
byte LF = (byte) 0x0A;
List<Byte> bytes = new ArrayList<Byte>();
bytes.add(STX);
for (char c : ID.toCharArray()) {
bytes.add((byte)c);
}
bytes.addAll(Arrays.asList(A, NUL, ETX, CR, LF));
Byte[] buffer = (Byte[]) bytes.toArray(new Byte[0]);
System.out.println(Arrays.toString(buffer));
印刷
[2, 48, 48, 48, 49, 65, 0, 3, 13, 10]
请注意,当char
值超出byte
可以容纳的值范围时,此解决方案可能无法按预期工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句