如何使用按位运算在整数中找到半字节?
我需要提取一个给定的半字节,特别是。
该方法看起来像这样
emails[0] = string.Empty;
以及此方法将返回的示例
private int nibbleExtract(int x, int whichNibbleToGet)
答案 0 :(得分:2)
你可以通过将数字转换为半字节索引的4倍,并使用0xF
进行屏蔽来实现:
int nibbleIndex = 7;
int data = 0xFF254545;
int nibble = (data >> 4*nibbleIndex) & 0xF;
如果没有乘法,你会怎么做?
像这样:
int nibble = (data >> (nibbleIndex << 2)) & 0xF;
现代优化器会为您将4*x
转换为x << 2
,因此这两种选择通常会为您提供相同的性能(而第一种当然更具可读性)。