Java 它代表什么位内操作?
这些代码行代表什么Java 它代表什么位内操作?,java,bit-manipulation,Java,Bit Manipulation,这些代码行代表什么 payloadType = header[1] & 127; sequenceNumber = unsigned_int(header[3]) + 256*unsigned_int(header[2]); timeStamp = unsigned_int(header[7]) + unsigned_int(header[6]) + 65536*unsigned_int(header[5])
payloadType = header[1] & 127;
sequenceNumber = unsigned_int(header[3]) + 256*unsigned_int(header[2]);
timeStamp = unsigned_int(header[7])
+ unsigned_int(header[6])
+ 65536*unsigned_int(header[5])
+ 16777216*unsigned_int(header[4]);
其中header是字节[12],unisigned_int方法如下:
private int unsigned_int(byte b) {
if(b >= 0) {
return b;
}
else {
return 256 + b;
}
}
谢谢你的回答 它正在将字节转换为整数 我认为这里有一个bug:
+ 256 * unsigned_int(header[6])
^^^^^
另外,与其写x*256
,x*65536
,x*16777216
,不如写x
从标题1中删除签名位/获取底部7位
sequenceNumber = unsigned_int(header[3]) + 256*unsigned_int(header[2]);
从标头中提取16位值
timeStamp = unsigned_int(header[7])
+ unsigned_int(header[6])
+ 65536*unsigned_int(header[5])
+ 16777216*unsigned_int(header[4]);
从标头中提取32位值。正如马克·拜尔斯所观察到的那样
private int unsigned_int(byte b) {
if(b >= 0) {
return b;
}
else {
return 256 + b;
}
}
将-128到127之间的整数(即一个字节)转换为表示为整数的8位无符号整数。相当于
return b & 255
问题是什么?代码以一种相当明显的方式操纵位。你在问什么?谢谢大家的回答和编辑我的帖子。我是stackoverflow的新手,我正在慢慢进入它的氛围。我也为我的英语道歉。保罗,我的问题正是关于这种明显的方式(对我来说不是,我是新的)的作用:unsigned_int(header[3])+256*unsigned_int(header[2])
return b & 255