如果我有一个字节,该方法如何在某个位置检索一个位?
这是我所知道的,我认为它不起作用.
public byte getBit(int position) {
return (byte) (ID >> (position - 1));
}
Run Code Online (Sandbox Code Playgroud)
ID我从中检索信息的字节的名称在哪里.
Hun*_*len 94
public byte getBit(int position)
{
return (ID >> position) & 1;
}
Run Code Online (Sandbox Code Playgroud)
按位置右移ID将使位#位于数字右侧最远的位置.将它与按位AND &与1组合将告诉您该位是否已设置.
position = 2
ID = 5 = 0000 0101 (in binary)
ID >> position = 0000 0001
0000 0001 & 0000 0001( 1 in binary ) = 1, because the furthest right bit is set.
Run Code Online (Sandbox Code Playgroud)
你想做一点掩码并按位进行.这将最终看起来非常接近你所拥有的 - 使用shift设置适当的位,用于&执行按位运算.
所以
return ((byte)ID) & (0x01 << pos) ;
Run Code Online (Sandbox Code Playgroud)
其中pos必须介于0到7之间.如果你的最低位为"位1"那么你需要你-1但我建议反对它 - 这种位置的改变总是导致我的错误来源.
| 归档时间: |
|
| 查看次数: |
83973 次 |
| 最近记录: |