我需要将所有数字都用一个十六进制数字并将它们“反转”:所有零变为非零(F),所有非零变为零。

我试过了:

void someFunction(DWORD hexVal)
{
     //...
     hexVal = ~hexVal;
     //...
}

并将0xE0000000更改为0x1FFFFFFF,而不是0x0FFFFFFF。

如何产生预期的结果?

最佳答案

这应该为您提供2个字节的所需结果。您得到4个字节的想法。

hexval = ((hexval & 0xf000) ? 0 : 0xf000) |
         ((hexval & 0xf00) ? 0 : 0xf00) |
         ((hexval & 0xf0) ? 0 : 0xf0) |
         ((hexval & 0xf) ? 0 : 0xf);

关于c++ - 十六进制值的反转数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11529520/

10-15 18:30