如何将String转换为十六进制?

时间:2016-11-17 12:31:26

标签: java android string hex converter

我在Android上运行了一个TCP客户端。服务器是OBD2加密狗。 我得到一个保存在String中的InputStream,但它是一个十六进制数。

TCP服务器的响应如下:FD A8 F1 FF 1F D0 03 20 它是一个8字节长的十六进制数,但我将它作为字符串发送,所以我需要将其转换为十六进制。

我该怎么做?

编辑:

Parse error: syntax error, unexpected T_FUNCTION in /my/root/path/init on line 70

这正是我在screnn& FD A8 F1 FF 1F D0 03 20'包括之间的空格。

3 个答案:

答案 0 :(得分:0)

试试这个:     Integer.toHexString(的Integer.parseInt(字符串));

答案 1 :(得分:0)

尝试以下代码即可。控制台中打印的值为十六进制格式。如果您想稍后使用它,请存储它。

public static void stringToHex(){

    String hexStr = "FD A8 F1 FF 1F D0 03 20";
    char[] chars = hexStr.toCharArray();

      StringBuffer hex = new StringBuffer();
      hex = new StringBuffer("0x");
      int  i =0;
      while(i<chars.length){
          if(chars[i]==' '){
              i++;
              //you can store this value if you want
              System.out.println(hex.toString());
              hex = new StringBuffer("0x");
              continue;
          }
          hex.append(chars[i]);
          i++;
      }
}

根据要求实施更短:

String hexStr = "FD A8 F1 FF 1F D0 03 20";
String[] hexStrs = hexStr.split(" ");
DecimalFormat df = new DecimalFormat("#.00");
Double[] values = new Double[hexStrs.length];
for(int i=0; i<hexStrs.length; i++){
    values[i] = Double.valueOf(df.format(Integer.valueOf(hexStrs[i], 16)*0.04));
    System.out.println(values[i]);
}

答案 2 :(得分:0)

十六进制表示中的值是否表示单个值?如果是这样的话:

String hexStr = "FD A8 F1 FF 1F D0 03 20";
String hexNoSpace = hexStr.Replace(" ", string.Empty);

long valAsLong = long.Parse(hexNoSpace, NumberStyles.AllowHexSpecifier);
ulong valAsUnsignedLong = ulong.Parse(hexNoSpace, NumberStyles.AllowHexSpecifier);

结果:

长:-168618907973713120

as ulong:18278125165735838496