c++ - 反转十六进制值的数字

标签 c++ hex

我需要获取十六进制数中的所有数字并将它们“反转”:所有零变为非零 (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/

相关文章:

c++ - vector 中的内存重新分配

c - 如何 printf ("%0x") 并根据类型确定位数?

Python 十六进制比较

c++ - 为什么需要 virtual 关键字?

c++ - 如何围绕表达式模板编写第三方库包装类

c++ - 具有 Eigen 的 CppAD

c - 十六进制数组转浮点型

c# - 如何将十六进制字符串转换为有符号整数?

c++ - 如何在 C++ 中将十六进制数字转换为二进制?

c++ - 在父类中访问子类的功能