我有一个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);
答案 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
,我想它是一个简单的值。在这种情况下,考虑基础是非敏感的。使用某些编码存储值(编码对您来说并不重要)。但是当你想为变量设置一个值时,你可以使用许多不同的编码/基础。我的意思是,当您撰写17
,0x11
,0b10001
时,存储的值始终相同。在某些算术运算中使用该值时,管理它的方式不是您关心的问题。当您打印该值时,您可以选择输出格式,但这是因为您需要将值转换为选定的表示形式。
想想你的钱存入银行的方式:你可以给他们钱币,支票等,但他们以你真正不知道的方式存储价值(可能是硬盘上的某个简单数字) ,当你要求他们取款时,他们可以用不同的陈述(硬币等)给你价值。