Манипуляции с целочисленными преобразованиями int в hex - PullRequest
0 голосов
/ 24 ноября 2011

Я знаю, что это просто, и я знаю, что об этом спрашивают много раз, но все же я не смог найти то, что искал.

У меня есть значение от 0 до 500, это int. Я хочу иметь вывод от 0x00 до 0xFF.

public void method(int i)// 0-500
{
return the_proportional_value_in_hex_in_range_0_to_ff;
}

Может кто-нибудь запишет мне конвертер из этого вида. Спасибо

EDIT

Я ДЕЛАЮ НЕ хотел точное преобразование, я просто хотел масштабированное преобразование, и @Mac ответил именно то, что мне нужно.

Ответы [ 2 ]

2 голосов
/ 24 ноября 2011

int scaled = (i * 255) / 500;

i / 500 масштабирует i до диапазона 0 ... 1, затем умножает на 255 (то есть 0xFF) масштабирует до 0 ... 255. Делать это наоборот (умножить, а затем разделить) просто для предотвращения потери числового значения при разделении.

Для печати в шестнадцатеричном формате вы можете использовать System.out.printf("%x", scaled);. Я говорю «печать», потому что говорить о «шестнадцатеричном значении» не очень полезно.

0 голосов
/ 24 ноября 2011

У меня есть значение от 0 до 500, это int. Я хочу иметь выход от 0x00 до 0xFF

Неудача, это невозможно. Вам нужно 9 бит для этого. 500 = 0x1F4.

...