我是Java的新手,我确信这很简单。我一直试图将字符串转换为byte[]
似乎无法做到。我用它来打印机。
ArrayList<byte[]> commands = new ArrayList<byte[]>();
commands.add(new byte[] { 0x1b, 0x2d, 0x00 });
以上工作正常,但我需要的是能够获取0x1b
,0x2d
,0x00
值并从字符串中插入
String hexcode = "0x1b, 0x2d, 0x00";
commands.add(new byte[] { hexcode });
我已经尝试了很多东西似乎无法让它去。
答案 0 :(得分:1)
试试这个:
String str = "\u001b\u002d\u0000";
byte[] bytes = str.getBytes(StandardCharsets.ISO_8859_1);
这会产生一个等于new byte[] {0x1b, 0x2d, 0x00}
的字节数组。
说明:
\uxxxx
是您在Java代码中编写Unicode文字的方式。getBytes(Charset)
方法使用提供的Charset
执行字符到字节编码。\u0000
到\u00ff
直接映射到ISO_8859_1(或Latin-1)字符集中的0x00
到0xff
。答案 1 :(得分:0)
试试这个。非常简单的方法:
import java.util.ArrayList;
public class HelloWorld {
public static void main(String[] args) {
String hexcode = "0x1b, 0x2d, 0x00";
String[] stringArray = hexcode.split(",");
ArrayList<byte[]> byteArray = new ArrayList<byte[]>();
for (int x = 0; x < stringArray.length; x++) {
byteArray.add(stringArray[x].getBytes());
}
System.out.println(byteArray);
}
}
我们只是拆分第一个字符串并创建一个字符串数组。然后我们循环遍历它,为每个元素生成字节,将它们推入ArrayList(在你的例子中)。
吐出:
[B@74a14482, [B@1540e19d, [B@677327b6]