2014-11-06 81 views
0

我想将十进制-10值转换为十六进制字符串和字节数组格式。如何将十六进制值转换为字符串和字节数组

我已经试过

String minHex = Integer.toHexString(Integer.valueOf(-10)); 
System.out.println(minHex); 

导致fffffff6,我认为这是不正确的。而对于将字节数组我使用下面的函数这是我从

Convert a string representation of a hex dump to a byte array using Java?

public static byte[] hexStringToByteArray(String s) { 
     int len = s.length(); 
     byte[] data = new byte[len/2]; 
     for (int i = 0; i < len; i += 2) { 
      data[i/2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) 
           + Character.digit(s.charAt(i+1), 16)); 
     } 
     return data; 
} 

所以还不能肯定它会为零下十六进制值或无法找到工作。

+0

你的结果是二进制补码形式 - 这样做(0000 0000 0000 0000 0000 0000 0000 1010)考虑一个32位整数的二进制数。现在取所有数字的倒数(1111 1111 1111 1111 1111 1111 1111 0101),并将结果加1。你会得到你fffffff6以上的东西。它已签署。 – ha9u63ar 2014-11-06 12:29:57

回答

0

要一个十六进制转换为String你希望它即-10转换为-a的方式,使用:

String hex = Integer.toString(-10, 16); 

要转换为byte阵列,只需转换intbyte阵列,它是用相同的方式表示:

byte[] bytes = ByteBuffer.allocate(4).putInt(-10).array(); 
+0

谢谢让。但byte [] bytes = ByteBuffer.allocate(4).putInt(-10).array();会给整数-10的字节表示,但我想要十六进制-10的字节表示。该怎么做? – commit 2014-11-06 12:40:50

+0

完全一样。 – 2014-11-06 12:42:41

相关问题