给定一个字节确定二进制的特定值

时间:2013-10-16 15:54:38

标签: c binary hex

我可以通过执行以下操作确定每个给定字节的十六进制值:

hex = char & 0xff;

例如,我的hex值为50。这是二进制的,0011 0010

我正在查看2 ^ 5和2 ^ 4二进制位置,上面示例中的值为11。由于无论十六进制值如何都是一致的,我如何将binary值设置为等于11(或2 ^ 5和2 ^ 4二进制位置)?

1 个答案:

答案 0 :(得分:2)

这里的诀窍是掩盖和移动:首先,创建一个二进制“掩码”,其中有一个位于你想要保留的位置;在您的示例中,掩码为0x30。然后将二进制“和”应用于原始数字和掩码,并将结果移位到较小位位置(在本例中为4)的位置:

hex4and5 = (ch & 0x30) >> 4;

如果它让你更容易,你可以扭转掩蔽和转移:

hex4and5 = (ch >> 4) & 0x03; // Note that the mask is shifted, too

要从位位列表中创建掩码,请在1 << pos的表达式上使用二进制“或”,其中pos是感兴趣的二进制位置。例如,要为位置45构建蒙版,请使用

int mask4and5 = (1 << 4) | (1 << 5);