前言
随着单片机的学习哈,逐渐的大家会经常碰到HEX格式传送数据,类似于ABC123这种数据并不能直接字符串传送过去,只能根据数据位发送 即就是 0x41(A),0x42(B),0x43(C),0x31(1),0x32(2),0x33(3)。
效果如下链接工具:
HEX转字符 十六进制转字符 hex gb2312 gbk utf8 汉字内码转换 – The X 在线工具 (the-x.cn)
当然在单片机内部,以及我们C语言编程的时候必然是需要编写函数来解决此类问题。
补充三个小知识点(各位看官就随眼一过即可):
C语言中绝对不可以连续赋值!!!
//可以定义的方式
int a,b,c;
a=1;
b=1;
c=1;
或
int a=1;int b=1;int c=1;
int a,b,c;
a=b=c=1;
或
int b,c;
int a=b=c=1;
//不可以定义的方式
int a=b=c=1;
C语言中 Switch中的 break和return的区别?
break是直接退出switch语句,如果循环里面有switch语句,这时候break语句只是跳出switch语句,作用不到循环体,return是退出该函数,也就是switch语句后面的语句也不执行了。
在函数中,break用于结束一个循环,即跳出循环体,执行循环体之后的代码。但是只能结束最里面的循环。return也不是专门用于结束循环,return的功能是结束一个方法并且返回一个函数值,当一个方法遇到return语句时,这个方法将被结束。方法结束 ,执行权回到方法调用处。
C语言中 类型转换?
int to char:
int a = 1;
a = a + ‘0’;
printf(“%c”,a);
char to int:
char a = 1;
a = a – ‘0’;
printf(“%d”,a);
string to 数字:
atoi —— 转为int
atol —— 转为long
atof —— 转为double
数字 to string
sprintf —— 转为数字
char s[5];
int a=11111;
sprintf(s,”%d”,a);
一、String 转 HEX
const char hex[] = {
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
void to_hex(char *s, int l, char *d)
{
while(l--)
{
*(d+2*l+1) = hex[(*(s+l))&0x0f];
*(d+2*l) = hex[(*(s+l))>>4];
}
}
二、HEX 转 String
void to_str(char *s, int l, char *d)
{
while(l--)
{
char* p1 = s+l;
char* p2 = p1-1;
*(d+l/2) =
( (*p1>'9'? *p1+9 : *p1) & 0x0f ) |
( (*p2>'9'? *p2+9 : *p2) << 4 );
l--;
}
}
三、综合测试案例
#include <stdio.h>
//查表法
const char hex[] = {
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
void to_hex(char *s, int l, char *d)
{
while(l--)
{
*(d+2*l+1) = hex[(*(s+l))&0x0f];
*(d+2*l) = hex[(*(s+l))>>4];
}
}
void to_str(char *s, int l, char *d)
{
while(l--)
{
char* p1 = s+l;
char* p2 = p1-1;
*(d+l/2) =
( (*p1>'9'? *p1+9 : *p1) & 0x0f ) |
( (*p2>'9'? *p2+9 : *p2) << 4 );
l--;
}
}
int main () {
char s[]= "ABC123",d[9],f[9];
int i;
d[8] = '\0';
to_hex(s,sizeof(s)-1,d);//末尾是'\0'
to_str(d,2*sizeof(d),f);//字符占2位
printf("原始字符串:%s\n",s);
printf("字符串转换为HEX:%s\n",d);
printf("HEX转换为字符串:%s\n",f);
return 0;
}
测试结果:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73630.html