首页 > 代码库 > 串口收发数据时字符、十六进制、二进制格式详细区分
串口收发数据时字符、十六进制、二进制格式详细区分
在使用串口调试助手时发送和接收数据都是以字节 (Byte) 为单位,并且可以选择字符、十六进制、二进制三种收发格式 ,那么这三种格式究竟怎样区分呢?
首先我们来明确一个概念 :串口收发数据的单位 ‘‘ 字节 (Byte) ‘‘ , 1Byte = 8 bits , 串口收发数据格式一般为 1bit起始位(一般为0) + 8bits 数据位(一字节) +1bit校验位(可有可无) +1bit结束位(一般为1)
下面逐一区分三种收发格式:
(1) 十六进制: 由于1位十六进制数位宽为 4bits ,那么 2 位十六进制数占有一个字节的位宽,所以当以16进制格式收发时,每个字节发送或者接收2位十六进制数, 举个例子 ,当以16进制格式发送一组数据 ‘‘ 0F3C781A ‘‘ 时 , 每个字节对应的数据如下:
发送数据 | 0x0F | 0x3C | 0x78 | 0x1A |
---|---|---|---|---|
字节数 | 1 | 2 | 3 | 4 |
注意: 类似 ‘‘0xFF‘‘ 是表示两位十六进制数的标准写法,‘‘0x‘‘ 在实际应用串口调制助手中时直接省略。
(2) 二进制 : 参照十六进制收发格式的原理 ,每位二进制数位宽为 1bit ,那么串口每个字节可以传输 8 位二进制数,同样,在传输数据 ‘‘ 0F3C781A ‘‘ 时 ,每个字节对应的数据即为上表中十六进制数对应的二进制数。
发送数据 | 0000_1111 | 0011_1100 | 0111_1000 | 0001_1010 |
---|---|---|---|---|
字节数 | 1 | 2 | 3 | 4 |
同样,以字符的格式发送数据 ‘‘ 0F3C781A ‘‘ 时 ,首先按照ASCII码表 (网址:http://www.asciima.com/) 找到每个字符对应的二进制和十六进制数如下表:
字符 | 0 | F | 3 | C | 7 | 8 | 1 | A |
---|---|---|---|---|---|---|---|---|
对应的16进制数 | 0x30 | 0x46 | 0x33 | 0x43 | 0x37 | 0x38 | 0x31 | 0x41 |
对应的2进制数 | 0011_0000 | 0100_0110 | 0011_0011 | 0100_0011 | 0011_0111 | 0011_1000 | 0011_0001 | 0100_0001 |
接收字节数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
接收字符 | 0 | F | 3 | C | 7 | 8 | 1 | A |
接收16进制数 | 0x30 | 0x46 | 0x33 | 0x43 | 0x37 | 0x38 | 0x31 | 0x41 |
接收二进制数 | 0011_0000 | 0100_0110 | 0011_0011 | 0100_0011 | 0011_0111 | 0011_1000 | 0011_0001 | 0100_0001 |
讲到这,想必读者对于串口收发数据的三种格式的区别已经清晰明了了吧。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。