Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

как получить HEX-представление байта?

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> как получить HEX-представление байта?
Имя
Сообщение << Старые топики   Новые топики >>
как получить HEX-представление байта? - 2008-03-03 01:12:32.170000   
RasenHerz

Сообщений: 303
Оценки: 0
Присоединился: 2007-11-27 21:17:15.833333
как осуществить преобразование значение байта, к примеру, 10, в 0хa ? по какому принципу осущствляется преобразование?
Post #: 1
RE: как получить HEX-представление байта? - 2008-03-03 01:49:12.600000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
ммм… тебе надо просто вывести в другой системе? Покопай википедию про системы счисления. Лень расписывать как ;).
Post #: 2
RE: как получить HEX-представление байта? - 2008-03-03 02:01:00.990000   
красный ерюпь

Сообщений: 16
Оценки: 0
Присоединился: 2008-03-02 16:30:36.246666
ну вообще есть такая функция IntToHex(); -Целое Value в строку с минимум Digits шестнадцатеричных цифр

Digits Cтрока с нулевым символом в конце содержащая до 18 для Extended или 19 для Currency значащих цифр …
Десятичная точка нехранится .завершающюи нули удаляются Если число равно нулю NAN или INF,Digits содержит только нулевой символ…
Post #: 3
RE: как получить HEX-представление байта? - 2008-03-03 11:32:15.456666   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
Вот код на асме:
MOV EAX,403000 ; В dword ptr ds:[403000], Dec значение CALL @Dec2Hex JMP&nbsp; @Exit @Dec2Hex:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&lt;= Procedure Start PUSH EDI PUSH EBX MOV EDI,EAX MOV ECX,-1 XOR EAX,EAX REPNE SCAS BYTE PTR ES:[EDI] NOT ECX DEC ECX JE @Dec2Hex_00401051 SUB EDI,2 XOR EBX,EBX INC EAX MOV DWORD PTR DS:[0403010h],EAX @Dec2Hex_00401029: XOR EAX,EAX MOV AL,BYTE PTR DS:[EDI] CMP AL,02Dh JE @Dec2Hex_0040104D AND AL,0Fh MUL DWORD PTR DS:[0403010h] ADD EBX,EAX IMUL EAX,DWORD PTR DS:[0403010h],0Ah MOV DWORD PTR DS:[0403010h],EAX DEC EDI DEC ECX JNZ @Dec2Hex_00401029 JMP @Dec2Hex_0040104F @Dec2Hex_0040104D: NEG EBX @Dec2Hex_0040104F: MOV EAX,EBX @Dec2Hex_00401051: POP EBX POP EDI RETN
Функция вернет HEX значение


Post #: 4
RE: как получить HEX-представление байта? - 2008-03-03 14:24:18.703333   
Absurd

Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
quote:

ORIGINAL: RasenHerz

как осуществить преобразование значение байта, к примеру, 10, в 0хa ? по какому принципу осущствляется преобразование?


Ты меня пугаешь.
char hex[5]; sprintf(hex, "0x%x", 10); printf("%s", hex);
Post #: 5
RE: как получить HEX-представление байта? - 2008-03-03 17:35:08.906666   
RasenHerz

Сообщений: 303
Оценки: 0
Присоединился: 2007-11-27 21:17:15.833333
quote:

Ты меня пугаешь.

char hex[5];
sprintf(hex, "0x%x", 10);
printf("%s", hex);


ты, наверное, еще больше испугаешься когда узнаешь что я хочу код реализующий данную функциональность написать сам.
про sprintf я слышал, но мне надо написать код "под меня". вот потому и спрашиваю по какому принципу происходит перевод!
Post #: 6
RE: как получить HEX-представление байта? - 2008-03-03 17:46:03.013333   
Absurd

Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
quote:

ORIGINAL: RasenHerz

quote:

Ты меня пугаешь.

char hex[5];
sprintf(hex, "0x%x", 10);
printf("%s", hex);


ты, наверное, еще больше испугаешься когда узнаешь что я хочу код реализующий данную функциональность написать сам.
про sprintf я слышал, но мне надо написать код "под меня". вот потому и спрашиваю по какому принципу происходит перевод!


Ну, перевод между системами счисления - это одно из базовых программистских знаний. Его еще в школе на бейсике делают. В шестнадцатиричной системе можно использоватьупрощенный а не не обобщенный алгоритм, сначала взяв значение старших 4 бит байта сдвинув его на 4 разряда вправо операцией >>: unsigned char loquad = byte >> 4, а потом младших замаскировав старшие 4 бита: unsigned char hiquad = byte & 0x0f. Обе половинки будут в диапазоне 0 - 15. Если половинка меньше 10, выводим соответствующее число в диапазоне 0 - 9. Если больше, то 10 - это A, … и тд до 15 - это F. Сначала выводим содержимое старшей, а потом младшей половинки.
Post #: 7
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> как получить HEX-представление байта?







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.