Как получить шестнадцатеричное значение из десятичного целого числа в Java?

Я не знаю, как сгенерировать шестнадцатеричный символ «0x83» из целочисленного значения в Java.

Мне нужно значение "0x83" для представления буквы кириллицы (эта буква: ѓ), чтобы отправить ее (букву) на мой принтер. При преобразовании 131 (0x83 в десятичной форме) в шестнадцатеричный формат с помощью моего конвертера (ниже) я получаю три числа: 0x31, 0x33 и 0x31.

public String toHex(String arg) {
    return String.format("%x", new BigInteger(arg.getBytes()));
}

Мне нужно получить 0x83 от этого преобразования.


person Ballon    schedule 10.03.2011    source источник
comment
Совершенно непонятно, что именно вы делаете. Похоже, вы конвертируете string 131 в байты, что совсем не одно и то же. Пожалуйста, покажите пример кода.   -  person Jon Skeet    schedule 10.03.2011
comment
Я отправляю параметр, который является целым числом, и после добавления 128 получаю значение больше 128 => 131 и конвертирую, но это неправильно. Потому что я не могу вставить кириллицу в eclipse и конвертировать.   -  person Ballon    schedule 10.03.2011
comment
public String toHex(String arg) { return String.format(%x, new BigInteger(arg.getBytes())); }   -  person Ballon    schedule 10.03.2011
comment
Тогда то, что говорит большинство ответов здесь, то есть Integer.toHexString должно решить вашу проблему!   -  person adarshr    schedule 10.03.2011
comment
@Gogoo: не помещайте код в комментарии - отредактируйте свой вопрос, чтобы сделать его более понятным.   -  person Jon Skeet    schedule 10.03.2011
comment
Вы утверждаете, что отправляете параметр, который является целым числом, но код, который вы предоставили в комментарии, принимает параметр string, а не целое число. Пожалуйста, будьте точны, иначе вам будет трудно помочь.   -  person Jon Skeet    schedule 10.03.2011
comment
Нет, потому что я использую этот метод для всех других функций в моей программе.   -  person Ballon    schedule 10.03.2011
comment
Хорошо, если быть точным, какой параметр мне нужно отправить моему методу в комментарии, чтобы получить 0x83. Или как отправить, чтобы получить 0x83. Поскольку этот параметр, который я не могу вставить в свою программу, это ссылка ascii.ca/cp1251.htm   -  person Ballon    schedule 10.03.2011
comment
Итак, вы хотите отправить один параметр на принтер, который возвращает 0x83 в ответ. Спешите ответить.   -  person Ankit    schedule 10.03.2011
comment
Я хочу отправить один параметр моему методу (public String toHex(String arg) { return String.format(%x, new BigInteger(arg.getBytes())); }), который преобразует входной параметр и возвращает 0x83.   -  person Ballon    schedule 10.03.2011
comment
Или мне нужно изменить таблицу кодирования? Или метод, но другой персонаж, чтобы он оставался таким же, как и раньше.   -  person Ballon    schedule 10.03.2011
comment
Это потому, что мне нужно больше 1 байта для представления (ѓ).   -  person Ballon    schedule 10.03.2011
comment
Я пытаюсь так: toHex(+(char)131); но я получаю 0x3f.   -  person Ballon    schedule 10.03.2011
comment
Вы действительно хотите отправить на принтер шестнадцатеричную строку "0x83" или хотите отправить на принтер байт с этим значением 0x83 = 131?   -  person Paŭlo Ebermann    schedule 10.03.2011


Ответы (5)


Если вы пытаетесь преобразовать целое число 131 в шестнадцатеричную строку, вы можете попробовать

Integer.toHexString( 131 )

Он вернет «83» в виде строки.

person Nishan    schedule 10.03.2011

Вот один пример:

String str = Integer.toHexString(131);
System.out.println(str);
person Ankit    schedule 10.03.2011
comment
public String toHex(String arg) { return String.format(%x, new BigInteger(arg.getBytes())); } Я использую этот конвертер... - person Ballon; 10.03.2011
comment
@Gogoo: - Просто отладьте код и посмотрите, как строка arg.getBytes() генерирует значения ascii для каждой цифры, поэтому на выходе получается 31,33,31. - person Ankit; 10.03.2011
comment
Мне нужно получить 0x83. Или как отправить и какое значение получить 0x83. Поскольку (ѓ) я не могу вставить в свою программу вот эту ссылку ascii.ca/cp1251.htm - person Ballon; 10.03.2011

Пробовали ли вы проверить Java Целочисленный API. Вот несколько примеров:

person posdef    schedule 10.03.2011

Я не вижу проблемы при конвертации:

System.out.println(Integer.toHexString(131));

возвращает 83.

person ilalex    schedule 10.03.2011
comment
public String toHex(String arg) { return String.format(%x, new BigInteger(arg.getBytes())); } Я использую этот конвертер... - person Ballon; 10.03.2011
comment
@Gogoo Можешь попробовать с String.format("%x", Integer.parseInt(s)) - person Nishan; 10.03.2011

Две возможности: либо вашему принтеру требуется 0x83 в виде байта, либо в виде строки/символа.

Отправить как байт:

int Cyrillic_int = 131; 
byte Cyrillic = (byte) Cyrillic_int;

Или отправьте строковое представление 0x83:

int Cyrillic_int = 131;
String Cyrillic = Integer.toHexString(131);
person Hammad    schedule 23.09.2013