通过执行以下操作,可以确定每个给定字节的十六进制值:
hex = char & 0xff;
例如,我的hex
值是50
。以二进制语言表示,这将是0011 0010
。
我看的是2^5和2^4二进制位置,在我上面的例子中,这个值是11
。由于无论十六进制值如何,这都是一致的,我如何将binary
值设置为等于11
(或2^5和2^4二进制位置)?
发布于 2013-10-16 07:59:21
这里的诀窍是掩码和移位:首先,创建一个二进制“掩码”,其位置位于您想要保持的位置;在您的示例中,掩码将是0x30
。然后将二进制" and“应用于原始数字和掩码,并根据较小位位置的位置(在本例中为4)移动结果:
hex4and5 = (ch & 0x30) >> 4;
如果这样做对你来说更容易的话,你可以逆转掩蔽和移动:
hex4and5 = (ch >> 4) & 0x03; // Note that the mask is shifted, too
若要根据位位置列表制作掩码,请在1 << pos
的表达式上使用二进制“或”,其中pos
是感兴趣的二进制位置。例如,要构建4
和5
位置的掩码,请使用
int mask4and5 = (1 << 4) | (1 << 5);
https://stackoverflow.com/questions/19408081
复制