char 型数据与十进制数据之间的转换

一,

a = com_rx_buff[10] - 0x30;
b = com_rx_buff[11] - 0x30;                                                                                                                                      
c = com_rx_buff[12] - 0x30;
m = a*100 + b*10 + c;
减0x30?

解释: a,b,c是 char 型,也可以是short型,也可以是int型的,但在这里,a的最值应该不会超过9,所以char型更合适。将接收存放在com_rx_buff[]中的数据(char)型 转换成 十进制数,
假设 com_rx_buff[11]中的数据为 '9', 在ASCII中9的十六进制是0x39,减去 ‘0‘的ASCII的十六进制0x30 就得到数字9了。

二,测试


#include<stdlib.h>
#include<stdio.h>
#include<stdint.h>
#include<unistd.h>
#include<error.h>

void main(void)
{
    uint32_t val;
    uint8_t distance = 138;
    uint8_t tx_buf[5];
    tx_buf[0] = 0x55;
    tx_buf[4] = 0x0D;                                                             

    tx_buf[1] = distance/100%10 + 0x30;
    //printf("%d \n",tx_buf[1]);
    //printf("%d \n",'0');
    tx_buf[2] = distance/10%10 + 0x30;
    tx_buf[3] = distance%10 + 0x30;
    printf("\n %d %d %d \n",tx_buf[1],tx_buf[2],tx_buf[3]);//49 51 56

    val = (tx_buf[1] - '0') * 100 + (tx_buf[2] - '0') * 10 + (tx_buf[3] - '0');

    printf("val = %d \n",val);
}


执行结果:

 49 51 56
val = 138


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值