这些代码行代表什么?
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;
}
}
感谢您的回答!
答案 0 :(得分:2)
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位无符号整数。相当于
return b & 255
答案 1 :(得分:1)
它将字节转换为整数。
我认为这里有一个错误:
+ 256 * unsigned_int(header[6])
^^^^^
此外,不是撰写x * 256
,x * 65536
,x * 16777216
而是写x << 8
,x << 16
,x << 24
更清楚。< / p>