这些代码行代表什么?

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/

10-11 15:17