位运算中它代表什么?
这几行代码代表什么?
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 是一个 byte[12] ,方法 unisigned_int 是这样的:
private int unsigned_int(byte b) {
if(b >= 0) {
return b;
}
else {
return 256 + b;
}
}
谢谢您的回答!
What do those lines of code stand for?
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]);
Where header is a byte[12] and the method unisigned_int is this:
private int unsigned_int(byte b) {
if(b >= 0) {
return b;
}
else {
return 256 + b;
}
}
Thank you for answering!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从标头 1 中去除符号位/获取底部 7 位
从标头中提取 16 位值
从标头中提取 32 位值。马克·拜尔斯(Mark Byers)观察到了这个错误。
将 -128 到 127 之间的整数(即一个字节)转换为表示为整数的 8 位无符号 int。相当于
Strip the sign bit off header 1 / get bottom 7 bits
extract a 16 bit value from the header
extract a 32 bit value from the header. With the bug as observed by Mark Byers.
convert an integer from -128 to 127 (i.e. a byte) into a 8 bit unsigned int represented as an integer. Equivalent to
它将字节转换为整数。
我认为这里有一个错误:
另外,不要写
x * 256
,x * 65536
,x * 16777216
,这样会更清楚写x << 8,
x << 16,
x << 24
。It's converting bytes to integers.
I think there is a bug here:
Also instead of writing
x * 256
,x * 65536
,x * 16777216
it would be more clear to writex << 8
,x << 16
,x << 24
.