[英]c# get bits from int as int
我需要从具有以下格式的整数中获取4个整数
int1 14 bits
int2 14 bits
int3 3 bits
int4 1 bit
我找到了很多文章,这些文章都是关于从int读取单个位的,但是从单个整数中读取多个值却找不到任何东西,因此我们将不胜感激!
假设它是从左到右
int int1 = x >> 18;
int int2 = (x >> 4) & 0x3fff;
int int3 = (x >> 1) & 7;
int int4 = x & 1;
您可以按位使用并获得以下信息:
int source = somevalue;
int int1 = 16383&somevalue;
int int2 = 268419072&somevalue;
int int3 = 1879048192&somevalue;
因此, 假设您的32位整数按如下方式按位排列,并且目标变量为X,Y,Z和W。
31 0 # bit index
XXXXXXXXXXXXXX YYYYYYYYYYYYYY ZZZ W # arrangement
......14...... ......14...... .3. 1 # bits per variable
............18 .............4 ..1 0 # required right-shift
要获得X
,您需要将整数右移18位,然后用((1<<14)-1)
(即0x3FFF)屏蔽它,依此类推:
x = (i >> 18) & 0x3FFF
y = (i >> 4) & 0x3FFF
z = (i >> 1) & 7 # ((1<<3)-1) = 7
w = i & 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.