-1

嗨,我有以下字符串

   String msg = "9192939495"

我想创建波纹管字节

   byte[] texttoprint = {(byte) 0x91, (byte) 0x92,(byte) 0x93,(byte) 0x94,(byte) 0x95}

我试试这个

public static byte[] hexStringToByteArray(String s) {
    /*String input = "0102FFAB";*/
    byte[] data = new byte[s.length() / 2];

    for( int i = 0; i < s.length(); i+=2)
    {
      data[i/2] = (byte) Integer.decode( "0x" + s.substring( i, i + 2 )  ).byteValue();
    }
    return data;
}

但它不起作用

另外,如何在 Eclipse 日志中打印 texttoprint 以检查一切是否正常?

PS如果我发送到打印机 {(byte) 0x91, (byte) 0x92,(byte) 0x93,(byte) 0x94,(byte) 0x95} 一切正常,但如果我发送 hexStringToByteArray 的结果没有任何反应

4

1 回答 1

0
static byte[] decode(final String enc) {
  final long val = Long.parseLong(enc, 16);
  final byte[] raw = new byte[] {
    (byte) ((val & 0xff00000000000000L) >> 56),
    (byte) ((val & 0xff000000000000L) >> 48),
    (byte) ((val & 0xff0000000000L) >> 40),
    (byte) ((val & 0xff00000000L) >> 32),
    (byte) ((val & 0xff000000) >> 24),
    (byte) ((val & 0xff0000) >> 16),
    (byte) ((val & 0xff00) >> 8),
    (byte) (val & 0xff)
  };
  final int n = enc.length() >> 1;
  final byte[] trimmed = new byte[n];
  System.arraycopy(raw, 8 - n, trimmed, 0, n);
  return trimmed;
}

您可以打印Arrays.toString用于转换为文本形式的值。要验证它们是否相等,请尝试使用Arrays.equals.

System.out.println(Arrays.equals(texttoprint, hexStringToByteArray("9192939495"))
    ? "success" : "failure");
于 2012-09-09T16:49:49.590 回答