如何从字节中获取某个位置的位值?
如果我有一个字节,该方法在某个位置检索位时会是什么样子?
这是我所知道的,我认为它不起作用。
public byte getBit(int position) {
return (byte) (ID >> (position - 1));
}
其中 是我从中检索信息的字节的名称。ID
如果我有一个字节,该方法在某个位置检索位时会是什么样子?
这是我所知道的,我认为它不起作用。
public byte getBit(int position) {
return (byte) (ID >> (position - 1));
}
其中 是我从中检索信息的字节的名称。ID
public byte getBit(int position)
{
return (ID >> position) & 1;
}
按位置向右移动 ID 将使位#position位于数字右侧最远的位置。将其与按位 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.
你想做一个有点面具,并按位和。这最终会看起来非常接近你所拥有的 - 使用shift来设置适当的位,用于做一个按位操作。&
所以
return ((byte)ID) & (0x01 << pos) ;
其中,范围必须在 0 和 7 之间。如果你有最不重要的位作为“位1”,那么你需要你的,但我建议不要这样做 - 这种位置的改变对我来说总是错误的根源。pos
-1