2 chingxing chingxing 于 2015.06.02 14:51 提问

java里怎字符串“0xDE"转为字节型的0xDE

把从SD卡里取出来的字符串“0x03 0x04 0x05"转为(byte)0x03 (byte)0x03

4个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.06.02 15:28
已采纳
 public static byte[] hexStringToBytes(String hexString) {  
        if (hexString == null || hexString.equals("")) {  
            return null;  
        }  
        hexString = hexString.toUpperCase();  
        if(hexString.indexOf("0X")>=0) hexString=hexString.replace("0X", "");
        int length = hexString.length() / 2;  
        char[] hexChars = hexString.toCharArray();  
        byte[] d = new byte[length];  
        for (int i = 0; i < length; i++) {  
            int pos = i * 2;  
            d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));  
        }  
        return d;  
    }  
    private static byte charToByte(char c) {  
        return (byte) "0123456789ABCDEF".indexOf(c);  
    }  
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        byte[] by = hexStringToBytes("0x030x040x05");
        byte[] by2 = new byte[]{(byte) 0x03,(byte) 0x04,(byte) 0x05};
                //这两个by和by2是一致的
    }
chingxing
chingxing 谢谢了
2 年多之前 回复
edouardzyc
edouardzyc   2015.06.02 15:22

这。。 写个小程序呗
String[] s = “0x03 0x04 0x05".split(" ");
byte[] byte = =new byte[s.size];
int i = 0;
for(String str: s) {
byte[i] = str;
i++;
}

chingxing
chingxing 谢谢,已解决
2 年多之前 回复
edouardzyc
edouardzyc 应该是 byte[i] = Integer.valueOf(str, 16).byteValue();
2 年多之前 回复
qq_22202859
qq_22202859   2015.06.02 15:30
chingxing
chingxing 就是这个方法,谢谢
2 年多之前 回复
Arnold9009
Arnold9009   2015.06.03 16:08

这个是典型的ascii到hex的转换,需要自己写个函数来实现,毕竟ascii的格式不确定

Csdn user default icon
上传中...
上传图片
插入图片