Получите конкретный гексаметр из адреса памяти M68k с языком C

У меня есть новый вопрос, связанный с этим другим, который решается. Получите конкретный байт из адреса памяти M68k с языком C

Теперь мой адрес имеет полный ряд:

FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

которые являются шестнадцатеричными.

Если я попытался с тем же шаблоном другого вопроса, я не могу получить значение, отображаемое printf... это то, что я сделал:

char* REG_SW;
REG_SW = (char*)0x300123;

тогда:

printf("H DIP SWITCHES: %d", REG_SW[0])

дает мне -1

Спасибо заранее и Веселый XMas !!

1 ответ

Чтобы напечатать значение char в шестнадцатеричной форме, используйте

printf("H DIP SWITCHES: %02X", REG_SW[0])

Посмотрите здесь, чтобы получить учебник printf, но суть в нашем случае заключается в использовании спецификатора формата X, имеющего значение, напечатанное в шестнадцатеричной форме шириной 2 байта (это то, что позади ширины формата 02)

EDIT-, поскольку chux наблюдал в своем комментарии к вопросу о его критическом рассмотрении значения регистра как типа без знака

unsigned char* REG_SW (unsigned char*) 0x300123;

licensed under cc by-sa 3.0 with attribution.