我有下一个问题,我在java中有整数,0到29之间的位是时间戳,30到31之间的位表示级别(可能的值为0,1,2,3)。所以我的问题是,如何从这个整数中获取时间戳作为长整数,以及如何从该整数中获取该字节的水平。
答案 0 :(得分:1)
int value = ...;
int level = value & 0x3;
long timestamp = (long) ( (value & ~0x3) >>> 2 );
答案 1 :(得分:0)
假设时间戳是无符号的:
void extract(int input) {
int timestamp = input >>> 2; // This takes the entire list of bits and moves drops the right 2.
int level = input & 0x03; // this takes the entire list of bits and masks off the right 2.
}
请参阅http://download.oracle.com/javase/tutorial/java/nutsandbolts/op3.html
答案 2 :(得分:0)
这是正确答案:
void extract(int input) {
int level = input >>> 30;
int timestamp = (input & ~0xC0000000);
}
感谢以前的家伙们回答。