比如对方发过来报文 我接受 解包 那个报文上有个字段 是1个字节 我用char定义 那个字段中包括3个信息 1bit 扩展位 1bit长度位 6bit tag标识位 正好8bit一个字节 但我不知道怎么解出这些bit位的值 解出来后最好转换成int判断处理 告诉我怎么实现 不知道怎么解,也不知道怎么转换
第1个回答 2014-12-01
int x = char a &0x3f 后6位
int y =char a &0x40
int z = char a&0x80追问
int y =char a &0x40
int z = char a&0x80追问
第1位 和0x80与 (10000000)
第2位 和0x40与 (01000000)
后6位 和0x3f与 (00111111)
是吧 好的 谢谢 那么问题来了刚才说的是解包解出值 但 我如果要拼起来 怎么拼成1个字节
第1位 和0x80与 (10000000)
第2位 和0x40与 (01000000)
后6位 和0x3f与 (00111111)
是吧 好的 谢谢 那么问题来了刚才说的是解包解出值 但 我如果要拼起来 怎么拼成1个字节
把啥拼起来?把x y z拼成a吗?
x y z拼a,
a |=(z&0x1)<<7;z是最高一位的
a |=(y&0x1)<<6;
a |=(x&0x3f)
第2个回答 2014-12-01
用位运算。
char bte1;
char extend = bte1 >> 7;
char length = (bte1 & 0x40) >> 6;
char mark = (bte1 & 0x3F) ;追问
char bte1;
char extend = bte1 >> 7;
char length = (bte1 & 0x40) >> 6;
char mark = (bte1 & 0x3F) ;追问
移位操作是干嘛的啊
追答你这个包用1bit 表长度的话,如果长度是1,char 的2进制是表示:00000001; 你要放到那一字节里的话它是要在bit6 上就该是01000000.
本回答被网友采纳