首页 新闻 会员 周边 捐助

c#中1byte中8bit对应不同的含义时,如何方便的解码?

0
悬赏园豆:40 [已解决问题] 解决于 2016-04-08 08:43

以十六进制表示  10至F3分别表示不同的含义,低位4bit和高位4bit分别映射不同的业务规则,先通过低位bit,来判断高位bit映射的业务规则。

比如10来举例,首先判断地位0对应的含义,然后再对应规则中查找高位1对应的含义。

除了通过字符串切割,是否有其他的方式好处理这类问题的?

说书的猫的主页 说书的猫 | 菜鸟二级 | 园豆:214
提问于:2016-04-07 17:48
< >
分享
最佳答案
1

通过掩码分别获得高低4位的内容(高位要右移),再对分解的内容进行识别判断

收获园豆:40
519740105 | 大侠五级 |园豆:5810 | 2016-04-07 17:56

解析成两个4位的byte,再来对比嘛? 4位的byte,通过什么方式可以和 0010这种4bit的数据对比呢?

说书的猫 | 园豆:214 (菜鸟二级) | 2016-04-07 18:01

@说书的猫: 哦 ,是再把4位的 分别补全成8位对比 ,高位右移补全 

说书的猫 | 园豆:214 (菜鸟二级) | 2016-04-07 18:02

@说书的猫: 对。

 

byte b = 10b;

byte highB = (b & 0xf0) >> 4;

byte lowB = b & 0xf;

519740105 | 园豆:5810 (大侠五级) | 2016-04-07 18:04

好的,明白了,非常感谢 ,第一次弄字节解码。

说书的猫 | 园豆:214 (菜鸟二级) | 2016-04-07 18:09

@说书的猫: 有个现成的类 叫 BitConverter (好像是这个名字),也许可以给你参考。

519740105 | 园豆:5810 (大侠五级) | 2016-04-07 18:10

@519740105: 嗯 好 我看看

说书的猫 | 园豆:214 (菜鸟二级) | 2016-04-07 18:11
其他回答(2)
1

 

用 byte 类型,然后使用“与”运算符

Launcher | 园豆:45050 (高人七级) | 2016-04-07 17:53
0

从使用者角度来说,希望是这样的: ByteBits bits = 10b; var bit0 = bits[0];var bit1= bits[1];

我写一个ByteBits类型,可以如上使用,当然还有其它调用方法,源代码在:https://github.com/xljiulang/NetworkSocket/blob/master/Net40/NetworkSocket/ByteBits.cs

 

jiulang | 园豆:437 (菜鸟二级) | 2016-04-09 15:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册