这些代码行代表什么?
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;
}
}
感谢您的回答!
最佳答案
payloadType = header[1] & 127;
去除标头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位值。具有Mark Byers观察到的错误。
private int unsigned_int(byte b) {
if(b >= 0) {
return b;
}
else {
return 256 + b;
}
}
将-128到127之间的整数(即一个字节)转换为8位无符号int,以整数表示。相当于
return b & 255
关于java - 在位操作中代表什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4132858/