C语言数据类型转换与进制转换(hex转str,str转hex/ASCII,str转float/int,float/int转str,进制转换等) 您所在的位置:网站首页 c语言转换进制怎么转换 C语言数据类型转换与进制转换(hex转str,str转hex/ASCII,str转float/int,float/int转str,进制转换等)

C语言数据类型转换与进制转换(hex转str,str转hex/ASCII,str转float/int,float/int转str,进制转换等)

2024-05-28 04:31| 来源: 网络整理| 查看: 265

理清楚数据类型转换,还是要回归ASCII码、

引用一下的ASCII表http://ascii.911cha.com/方便对比学习。在单片机中其实是自动识别十进制与十六进制的,但是有时候需要对数据转换获取想要的进制数。下面介绍几种数据类型的转换,此外方法很多,只简单介绍本人愚见。 在这里插入图片描述 一、字符串转ASCII

字符串其实就是上述ASCII表中的图形栏内容,转换成hex,即变成对应的十六进制数。通常以0123456789ABCDEF,进行转换。找规律:字符 ‘0’ 对应0x30 字符 ‘1’ 对应0x31 字符‘A’ 对应0x41 字符 ‘a’对应 0x61 等这些都是简单,早就知道的。换成C语言则可以这样写:

‘0~9‘ + 0x30

‘A~F’ - ‘A’+10

‘a~f’ - ‘a’+10

void str_to_acsll(uint8_t *s_inchar, uint8_t s_len, uint8_t *a_outtxt) { uint8_t size1=0,i=0; for( size1=0;size1 a_outtxt[size1] = s_inchar[size1] - 0x30; } else if( s_inchar[size1]>='A' && s_inchar[size1] a_outtxt[size1] = s_inchar[size1] - 'a'+10; } } for( size1=0,i=0;size1 uint8_t tempcode; uint16_t uslength = us_length * 2,us_count = 0,us_data; for(us_data = 0;us_count buf[us_count] = tempcode + '0'; } else { buf[us_count] = tempcode - 10 + 'A'; } tempcode = format[us_data] & 0X0F; if(tempcode buf[us_count+1] = tempcode - 0X0A + 'A'; } } buf[uslength] = '\0'; return uslength; }

三、float 转hex

union valReg { char onenet_data[4]; float onenet_float; }; union valReg onenet_val; ///float数据大小端的问题,低字节在后,高字节在前 int test() { float test_f=3.14; uint8_t test_i8[4]; onenet_val.onenet_float=test_f; test_i8[....]=onenet_val.onenet_data[...];即转换完成 }

新增:

hex -> char

unsigned char HexToChar(const unsigned char hex) { unsigned char ch = 0; unsigned char lsb = 0; lsb = hex & 0x0F; if (lsb ch = lsb - 10 + 'A'; } return ch; }

ascii -> hex

unsigned char AsciiToHex( const unsigned char ch) { if (ch = '0') { return (ch - '0'); } if (ch = 'a') { return ((ch - 'a') + 10); } if (ch = 'A') { return ((ch - 'A') + 10); } }

转至:原文 个人保留一下,以供后面学习!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有