Как я могу объединить два байтовых значения в одно? - PullRequest
0 голосов
/ 29 января 2019

Итак, это разбивка того, что я делал, я использую значение 0x0123456789abcdef с индексом выбора, a = 0, b = 1;a = ef, b = cd.

Сначала я разделил индексы, для которых они выбирались, и это работало отлично.

Значение A: 0x00000000000000ef.

Значение B: 0x00000000000000cd.

Затем я переместил их в то место, где ранее был индекс, для которого это тоже отлично работало.

Значение A: 0x000000000000ef00.

Значение B: 0x00000000000000cd.

Затем я соединил значения A и B, используя |оператор, который также отлично работал и сохранил их в длинное целое P

значение P: 0x000000000000efcd.

Затем я решил наконец объединить это со значением x 0x0123456789abcdef

Ито, как я решил сделать это, сначала я использовал оператор vor.

, поэтому я сделал p = x ^ p;

И с математикой я сделал

0x0123456789abcdef

0x000000000000efcd.


0x0123456789ab0000

Это должно стать таковым, но для некоторыхпричина, по которой это приводит к

0x0123456789ab2222, и я не понимаю, как там появляется 2222.Могу ли я получить желаемый результат 0x0123456789abefcd

?

1 Ответ

0 голосов
/ 29 января 2019

Шестнадцатеричный 0xE имеет биты 1110;hex 0xC имеет биты 1100;следовательно, 0xC ^ 0xE равно 0010 или 0x2.Следовательно, если вы xor эти две шестнадцатеричные цифры, вы получите результат 2.

Аналогично, 0xF имеет биты 1111;hex 0xD имеет биты 1101;следовательно, 0xF ^ 0xD - это 0010 или 0x2.

Следовательно, результат, который вы видите, именно то, что вы должны ожидать.

...