我需要将一个整数转换为十六进制值。以下是一个示例整数值:
int_value = -13516;
要转换为十六进制值,我做如下操作:
hex_value = Integer.toHexString(int_value);
我应该得到的值是:-34CC
(我不知道是否应该将其变成正数)。
问题在于,用这种方式进行转换后,我得到的值为:ffff cb34
我不能使用这个函数进行转换吗?
文档说明 Integer.toHexString
返回无符号 int
的十六进制表示形式。
我相信 Integer.toString(value, 16)
将能够实现您想要的功能。
String.format("#%06X", (0xFFFFFF & colorYellow));
输出:#FFC107
public static int convert(int n) {
return Integer.valueOf(String.valueOf(n), 16);
}
// in onstart:
Log.v("TAG", convert(20) + ""); // 32
Log.v("TAG", convert(54) + ""); // 84
Integer.toHexString 和 String.format("%x")都不支持添加符号。为了解决这个问题,你可以使用三元表达式:
int int_value = -13516;
String hex_value = int_value < 0
? "-" + Integer.toHexString(-int_value)
: Integer.toHexString(int_value);
请查看以下代码,了解整数到十六进制和十六进制到整数的转换:
public class MainActivity extends Activity {
int number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
number = 678668;
Log.i("ACT", "Integer Number " + number);
/**
* Code for convert integer number to hex number. two mwthods.
*/
Log.i("ACT", String.format("#%x", number)); // use lower case x for
// lowercase hex
Log.i("ACT", "#" + Integer.toHexString(number));
/**
* Code for convert hex number to integer number
*/
String hex = Integer.toHexString(number).replace("/^#/", "");
int intValue = Integer.parseInt(hex, 16);
Log.i("ACT", "Integer Number " + intValue);
}
}
我认为以上的答案不能给出带符号位的精确值。例如,11的值是0B,但-11的值应该是F5而不是-B,因为2的补码被用来解决这个问题。我已经修改了以上的答案。
int int_value = -11;
String hex_value = int_value < 0
? Integer.toHexString(int_value+65536) : Integer.toHexString(int_value);
String shortHexString = hex_value.substring(2);
在这里,65536指的是2的16次方,现在你可以得到预期的结果。祝编程愉快 :)
sprintf
函数,因为%X
格式化符在两种语言中的工作方式是相同的。 - Lorne Laliberte