如何在java中将十进制值转换为十六进制int值

时间:2015-02-06 19:29:29

标签: java

我有一个int变量,需要发送十六进制值

int number1=46;
o/p should be 0x2e;

即我可以存储值int number2 = 0x2e;输出不应该是字符串。

基本上我用它来通过缓冲区发送resoponse,缓冲区必须是十六进制值

ChannelBuffer response = ChannelBuffers.directBuffer(2);
response.writeByte(o/p i.e number2);

2 个答案:

答案 0 :(得分:0)

您声明输出不应该是字符串,但这可能是不可能的。您可以将0x2e分配给int,但它将存储十进制值。

您可以将十六进制字符串更改为int,将int更改为十六进制,如下所示:

//from hexa to decimal
int number = Integer.parseInt(hexaString, 16);
//from decimal to hexadecimal
String hexaString = Integer.toHexString(number);

如果您以十六进制格式提供更多详细信息,那么这个答案可能会在更新中发生变化,因为两个值都相同,而0x2e而不是46只会影响可视化。

编辑:我错了,发现你可以发送字节值。

int number = 0x2e;
byte hex = (byte) number;

这样你就不会使用String,并且会根据需要使用十六进制。

答案 1 :(得分:0)

如果输出不应该是String,我想它是一个简单的值。在这种情况下,考虑基础是非敏感的。使用某些编码存储值(编码对您来说并不重要)。但是当你想为变量设置一个值时,你可以使用许多不同的编码/基础。我的意思是,当您撰写170x110b10001时,存储的值始终相同。在某些算术运算中使用该值时,管理它的方式不是您关心的问题。当您打印该值时,您可以选择输出格式,但这是因为您需要将值转换为选定的表示形式。

想想你的钱存入银行的方式:你可以给他们钱币,支票等,但他们以你真正不知道的方式存储价值(可能是硬盘上的某个简单数字) ,当你要求他们取款时,他们可以用不同的陈述(硬币等)给你价值。