2012-09-09 165 views
-1

嗨,我有以下字符串如何将字符串转换为字节数组中的Java

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以检查一切是否正常?如果我发送到打印机{(字节)0x91,(字节)0x92,(字节)0x93,(字节)0x94,(字节)0x95}如果我发送hexStringToByteArray的结果没有任何反应

+0

它为什么不起作用?怎么了? – SLaks

+0

我把它发送到打印机,但没有打印... – kosbou

+0

如何在eclipse日志中打印texttoprint以检查一切正常 – kosbou

回答

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"); 
+0

对不起,但我是java新手,我不明白如何使用解码...再次抱歉 – kosbou

+0

@ user1081978尝试解码(“9192939495”)' – oldrinb

+0

请参阅[这里](http:// ideone.com/lqRDH)作为一个工作示例。 – oldrinb

相关问题