arduino发送16进制数组(蚁哥和你一起玩ARDUINO)
十六进制和二进制数是单片机、嵌入式编程中常用到的数据形式,熟悉两种数据类型的转换很有必要。
计算机的数字语言
十进制数我们都很熟悉,它是由0~9这十个数组合而成的。可以简单的描述十进制数为:见十进一。个、十、百、千、万等每位上最大的数值为9,最小为0。
同样可以理解十六进制数为:见十六进一。它是由0~9,a,b,c,d,e,f这16个数组合而成的。每位上最大的数值为f,最小为0。
同样,二进制数为:见二进一。它是由0和1这两个数组合而成的。
不同进制的进位计算
我们都知道,二进制在嵌入式编程中很多情况下都是直接对应硬件管脚状态,1表示高,0表示低,在控制LED点阵或者大量继电器的的时候,如果我们一位一位进行操作,程序会写的很啰嗦,但是用十六进制来表示的话,就很简单明了了。 十六进制数通常用unsigned char (8位),unsigned short(16位)或者unsigned long(32位)这几种类型来表示 ,也就是说,1个十六进制数就可以用来描述8/16/32个二进制数,那该如何快速转换呢?
十六进制数的每一位数都可以用4位二进制数来表示,
0x0=0B0000,0x1=0B0001,0x2=0B0010,0x3=0B0011,
0x4=0B0100,0x5=0B0101,0x6=0B0110,0x7=0B0111,
0x8=0B1000,0x9=0B1001,0xA=0B1010,0xB=0B1011,
0xC=0B1100,0xD=0B1101,0xE=0B1110,0xF=0B1111
只要记住最基本的16个二进制数,在遇到十六进制数转换时,就很容易快速的实现了。
如:0xAF5B就是把A、F、5、B分别展开,对应上表,很快得出:
0xAF5B = 0B1010 1111 0101 1011 。
反过来也是一样,把二进制数从最低位(一般从最右边数)开始每4位为一组进行转换就可以了,最后不够4位的话在左侧补0即可;
如: 0B 1 1011 0110 = 0B 0001 1011 0110 =0x1B6
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com