Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将负十六进制值转换为字符串和字节数组_Java_String_Hex - Fatal编程技术网

Java 如何将负十六进制值转换为字符串和字节数组

Java 如何将负十六进制值转换为字符串和字节数组,java,string,hex,Java,String,Hex,我想将十进制-10值转换为字符串和字节数组格式的十六进制 我试过了 String minHex = Integer.toHexString(Integer.valueOf(-10)); System.out.println(minHex); 这导致了fffffff6,我认为这是不正确的。对于转换字节数组,我使用下面的函数,我从 公共静态字节[]hexStringToByteArray(字符串s){ int len=s.length(); 字节[]数据=新字节[len/2]; 对于(int i

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

我试过了

String minHex = Integer.toHexString(Integer.valueOf(-10));
System.out.println(minHex);
这导致了fffffff6,我认为这是不正确的。对于转换字节数组,我使用下面的函数,我从

公共静态字节[]hexStringToByteArray(字符串s){
int len=s.length();
字节[]数据=新字节[len/2];
对于(int i=0;i数据[i/2]=(字节)((Character.digit(s.charAt(i),16)要按预期方式将十六进制转换为
字符串,即
-10
转换为
-a
,请使用:

String hex = Integer.toString(-10, 16);
要转换为
字节
数组,只需将
int
转换为
字节
数组,其表示方式相同:

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

你的结果是两个补码形式-考虑到你有一个32位整数,做这个(0000 0000 0000 1010)10的二进制。现在取所有数字的倒数(111111111111111111111111111110001)并将1加到结果中。你将得到fffffff6以上的结果。它是有符号的。谢谢Jean。但是字节[]bytes=ByteBuffer.allocate(4).putInt(-10).array();将提供整数-10的字节表示形式,但我希望十六进制-10的字节表示形式。如何处理?完全相同。
byte[] bytes = ByteBuffer.allocate(4).putInt(-10).array();