Преобразование меча в dec в little endian - PullRequest
0 голосов
/ 10 июня 2019

Слово x было сохранено в памяти в виде последовательности байтов 123, 29. Сколько стоит значение x в десятичной системе с использованием байтов с прямым порядком байтов?

Ответ на этот вопрос 7547.

Может кто-нибудь объяснить мне это шаг за шагом? Я уже знаю, что little endian меняет порядок, но это не дает ответа. Я пытался выполнить преобразование в другую систему, но это все равно дает мне неправильный ответ.

Ответы [ 2 ]

3 голосов
/ 10 июня 2019

Я бы хотел дать вам альтернативное объяснение ответу Каспера:

В десятичной системе вы можете «хранить» значения от 0 до 9 в каждой цифре. Для хранения больших чисел вы используете несколько цифр. Значение числа, записанного как «1234», рассчитывается так:

1234 = 4 + 3 * 10 + 2 * 10 * 10 + 1 * 10 * 10 * 10

Используя байты, вы можете хранить значения от 0 до 255 в каждой цифре. Как и в десятичной системе, вы можете хранить большие значения, используя несколько байтов:

4, 3, 2, 1 = 4 + 3 * 256 + 2 * 256 * 256 + 1 * 256 * 256 * 256

123, 29 = 123 + 29 * 256 = 7547

(«Little endian» означает, что наименьший байт сохраняется в памяти первым; точно так же, как вы читаете десятичное число справа налево.)

2 голосов
/ 10 июня 2019

Поскольку вы говорите о DWORD и конвертируете в младший порядок, я предполагаю, что у вас есть входная кодировка с двоичным значением 32 бита.

  1. Давайте преобразуем [123 |29 |00 |От 00] до HEX: [7B |1D |00 |00] => десятичное представление: 2065498112

  2. Обратим: [00 |00 |1D |7B] => десятичное представление: 7547

...