智能网联服务器在汽车远程控制的探索 5(bity[]数组转十进制和十六进制转二进制 C#)

上一篇文章中,我们说到了Canbus总线的数据类型有开关量、数值量等,车门闭合状态、灯光开启关闭、后视镜是否调整,都可以叫做开关量,一般0关1开;

另一种是车辆的速度、发动机转速、电机功率等,由八位、十六位或二十四位组成我们称呼为数值量,今天具体介绍这两种值类型转换。

一个LED灯有开关两种开关状态,我们用二进制0表示LED灯熄灭,二进制1表示LED灯打开。假如我们有8个LED灯元器件,当全部都熄灭时,用二进制表示就是0000 0000。全部打开时,用二进制表示就是1111 1111,因此我们要获得设备的开关状态,只需要把二进制转换为字符传输给服务器就可以,二进制0000 0000转换成字符就是0,二进制1111 1111转换成字符就是FF(十六进制)。同理,如果八个LED灯 现在每隔一个灯亮一个,暨状态是1010 1010,对应的数值就是1010 1010(二进制) = AA(十六进制),代码如下:

	//二进制字符串 转 十六进制
        byte by = Convert.ToByte("10101010", 2);
        //byte 转 二进制字符串
        string result = Convert.ToString(0xFF, 2);
		
        //二进制字符串 转 十进制
        int length = Convert.ToInt32("10101010", 2);
	//十进制 转 十六进制
        byte by = Convert.ToByte(256);

上面我们说到还有一种情况是数值量,一个十六进制字符为八个1,也就是二进制的“1111 1111”转换为十六进制和十进制数值分别就是FF和255,在实际车辆开发中发动机的转速、车辆行驶里程等数据往往超过255,这时我们可以用两个十六进制数值以高低位的形式来表示,比如十六进制的 0x07 0xD0,一般前面的是高位,后面的是地位,按高低位合并一起就是十进制数2000,公式是:高位值 x 256 + 地位值 = 结果,0x07转换为十进制是7,0xD0转换十进制是208,7x256+208=20000。这样我们就可以实现十进制数值和十六进制高低位数值的转换了。

今天说的了位的运算,我们知道程序中还有一种有位运算符,专门负责位的运算,例如(&按位与)(| 按位或)他们对我们进行数据转换有什么帮助呢?它们和逻辑判断经常用的&&和||有什么关系,下一篇我们会一起来谈谈

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值