2015-02-06 6 views
0

У меня есть int переменной и нужно отправить его шестнадцатеричное значениеКак преобразовать decemial значение INT шестнадцатеричное значение в Java

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

т.е. я могу хранить значение INT number2 = 0x2e; вывод не должен быть в строке.

В основном я использую его для отправки resoponse через буфер, который должен быть в шестнадцатеричном значении

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

Вы записываете байты int в буфер ответа. На байтовом уровне два значения '' 46'' и '' 0x2e'' совпадают. Вы уверены, что вам действительно нужно его преобразовать? – f1sh

+0

Не подразумевается ли использование int в байтовой работе? Просто попробуйте 'response.writeByte (number1)' - с учетом аргумента 'byte'. – vikingsteve

ответ

0

Вы заявили, что выход не должен быть строкой, но это может быть не представляется возможным. Вы можете назначить 0x2e для 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 и будете иметь его в шестнадцатеричном формате по желанию.

0

Если выход не должен быть String, я полагаю, что это простое значение. В этом случае, учитывая, что базис является не-чувством. Значения хранятся с использованием некоторого кодирования (независимо от того, что кодирование для вас не важно). Но когда вы хотите установить значение переменной, вы можете использовать множество различных кодировок/базиса. Я имею в виду, что когда вы пишете 17, 0x11, 0b10001 сохраненное значение всегда одно и то же. Когда вы используете значение в некоторых арифметических операциях, способ, которым он управляется, не является вашей проблемой. Когда вы печатаете значение, вы можете выбрать выходной формат, но это связано с тем, что вам нужно преобразовать значение в выбранное представление.

Подумайте, как ваши деньги хранятся в банке: вы можете дать им монеты, чеки и т. Д., Но они сохранили значение так, как вы действительно не знаете (возможно, простое место где-то на жестком диске), и когда вы просите их сделать вывод, они могут дать вам значение в разных представлениях (монеты и т. д.).

Смежные вопросы