android int 到 hex 转换

问题描述 投票:0回答:7

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

int_value = -13516;

要转换为十六进制值,我这样做:

hex_value = Integer.toHexString(int_value);

我应该得到的值是:

-34CC
(我不知道是否应该将其设为正值)。

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

ffff cb34

我不能使用这个函数来进行这种转换吗?

android int hex
7个回答
42
投票

文档说

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

我相信

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


4
投票
String.format("#%06X", (0xFFFFFF & colorYellow));

输出:

#FFC107


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 将整数转换为十六进制整数


3
投票

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

    int int_value = -13516;
    String hex_value = int_value < 0
                       ? "-" + Integer.toHexString(-int_value)
                       : Integer.toHexString(int_value);

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

}

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 现在您可以得到预期的结果。快乐编码:)

  • 列出项目

0
投票

这个问题隐藏了错误:如果我们谈论四个十六进制数字,这并不意味着

int
(4 个字节或 8 个十六进制数字),而是 Java 中的
short

如果我们谈论

int
,我们必须保留 8 个十六进制数字。上面的例子给出了错误的转换,有大量负值
int

    // Convert int to Hex String
    int value = -1878724255; //-13516; //

    String hexString = String.format("%08X", value);
    System.out.println("1: " + hexString);

    // this is wrong for an int
    int value2 = (value < 0) ? value + 65536 : value;
    System.out.println("2: " + Integer.toString(value2, 16));

    // Correct way to handle negative values of int is adding 2^32 (4294967296)
    long unsignedValue = value & 0xFFFFFFFFL;
    System.out.println("3: " + Long.toString(unsignedValue, 16));

结果:

1: 9004F161
2: -6ffa0e9f
3: 9004f161
© www.soinside.com 2019 - 2024. All rights reserved.