17

我必须将 int 转换为十六进制值。例如 int 值:

int_value = -13516;

要转换为十六进制值,我会:

hex_value = Integer.toHexString(int_value);

我应该得到的价值是:(-34CC我不知道我是否应该让它成为积极的)。

问题是,以这种方式进行转换,我得到的价值是:ffff cb34

我不能用这个函数来做这个转换吗?

4

6 回答 6

37

文档说Integer.toHexString将 的十六进制表示形式返回int为无符号值。

我相信Integer.toString(value, 16)会完成你想要的。

于 2013-08-06T10:56:18.373 回答
3
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

来自:Java 将整数转换为十六进制整数

于 2013-08-06T10:56:08.190 回答
3

Integer.toHexStringString.format ( "%x")都不支持符号。为了解决这个问题,你可以使用三元表达式:

    int int_value = -13516;
    String hex_value = int_value < 0
                       ? "-" + Integer.toHexString(-int_value)
                       : Integer.toHexString(int_value);
于 2013-08-06T11:05:22.067 回答
3
String.format("#%06X", (0xFFFFFF & colorYellow));

输出:#FFC107

于 2017-11-17T11:47:52.377 回答
2

通过以下代码进行整数到十六进制和十六进制到整数的转换

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);
   }

}
于 2013-08-06T10:55:40.627 回答
1

我认为上述答案不会为您提供带符号位的确切值。例如 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 现在您可以获得预期的结果。快乐编码:)

  • 项目清单
于 2016-05-17T12:28:25.280 回答