вопрос в том, как получить байтовые числа из целого числа без «0»? Я имею в виду, когда хочу:
printf("%x", 67305985);
вывод: 04030201. Есть ли возможность получить 4321 (без «0») на выходе? Я попытался преобразовать целое число в массив беззнаковых символов, но возникла та же проблема.
Спасибо за ваше время.
Какой результат вы хотите увидеть со значением 0x04300021
? 4321? — person CzadowyHuopak schedule 24.05.2020
Невозможно получить начальные 0
с описателем формата %x
. Вам нужно отредактировать свой вопрос и не указывать на неправду. — person CzadowyHuopak schedule 25.05.2020
Один из способов сделать это — использовать комбинацию битовых сдвигов и битовой маскировки.
Если вы
&
32-битное целое число против 32-битного целого0x000000FFu
, результатом будет целое число, в котором установлены только те биты, которые были уже установлены A: и B: расположены в последних 8 битах числа. Чтобы выбрать другие части целого числа, вы можете сдвинуть бит на значение, кратное 8. I.E.(x >> 8) &
0x000000FFuto select the second byte from the right,
(x >> 16) &0x000000FFu
для выбора третьего.Затем вы можете распечатать каждое из них как обычные целые числа без знака в десятичном формате.
Я не уверен, как производительность этого метода будет сравниваться с приведением беззнакового целочисленного указателя к беззнаковому указателю char и делать это таким образом.
Кроме того, если вы сделаете это, я настоятельно рекомендую определить 0x000000FFu в макросе, чтобы вам не приходилось копировать и вставлять его снова и снова. (Это также может облегчить чтение кода, если вы дадите макросу описательное имя) — person CzadowyHuopak; 24.05.2020