我有一个将int转换为十六进制的函数。在这个函数中,我得到一个0到100之间的搜索栏值。然后我做了一些更改,最后我把它转换为十六进制。
private String decimalToHex(int i) {
/**Conversion to decimal of the seekbar's % value*/
int_value = ((i * 20480) / 100) * -1;
int_value = -20480 - int_value;
/**Conversion to hex*/
hex_value = Integer.toString(int_value, 16);
//hex_value = Integer.toHexString(c2_final);
return hex_value;
}
让我们假设int i
值为52.这会得到下一个值:int_value = -9831
当我将此值转换为十六进制时,我得到-2667
。但这不是我需要的价值。
我需要进行转换,以十六进制结果的形式给出一个像“D999”这样的值。
我得到这个值 - 补充值(又称~
运算符)。
这类似于将值-9831
转换为positve 9831
,然后将1减去1来获取9830
,将最后一位更改为获取值55705
十六进制为D999
。
我最后怎么做?改变位?
C代码:
if (int_value < 0) {
c2_value = int_value * -1;
c2_value = c2_value - 1;
c2_final = ~c2_value;
}
答案 0 :(得分:1)
java.lang.Integer
提供toHexString()方法,将指定的整数转换为十六进制字符串表示形式。
您可以使用以下内容。
Log.d(TAG, java.lang.Integer.toHexString(-9831));
这将为您提供输出
08-07 18:53:57.643: D/Home(31698): ffffd999
获取输出,请使用以下代码。
String strHex = java.lang.Integer.toHexString(-9831);
if (strHex.length() > 4)
Log.d(TAG, strHex.substring(4));
else
Log.d(TAG, strHex);