2015-02-06 37 views
0

我有一個int變量,需要發送它的十六進制值如何decemial值轉換爲十六進制int值,在Java

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

即我可以存儲值INT數字2 = 0x2E之間;輸出不應該是字符串。

基本上我用它通過緩衝存儲器發送resoponse它必須在十六進制值

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

您正在將int的字節寫入響應緩衝區。在字節級別,兩個值「46」和「0x2e」是相同的。你確定你確實需要轉換它嗎? – f1sh 2015-02-06 19:33:13

+0

不隱式將int轉換爲字節工作?只要嘗試'response.writeByte(number1)' - 給定參數是'byte'。 – vikingsteve 2015-02-06 19:40:56

回答

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; 

這樣你不會使用字符串,並將按需要在十六進制。

0

如果輸出不應該是String我想這是一個簡單的值。在這種情況下,考慮基礎是非敏感的。值是使用一些編碼存儲的(不管編碼對你而言不重要)。但是當你想爲一個變量設置一個值時,你可以使用許多不同的編碼/基礎。我的意思是,當你寫17,0x11,0b10001時,存儲的值總是相同的。當你在一些算術運算中使用這個值時,它的管理方式不是你關心的問題。當您打印該值時,可以選擇輸出格式,但這是因爲您需要將值轉換爲選定的表示形式。

想想你的錢存儲在銀行的方式:你可以給他們硬幣,支票等,但他們存儲的方式,你真的不知道(可能是一個簡單的數字在硬盤上的某個地方),當你要求他們提款時,他們可以給你不同的表示(硬幣等)的價值。

相關問題