资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

c语言字符串变hex函数 怎样将c语言转化为hex

c语言输入一个字符串转换为十六进制并输出

#include stdio.h

创新互联是一家专业的成都网站建设公司,我们专注成都网站建设、成都网站设计、网络营销、企业网站建设,外链1元广告为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。

int IsHexChar(char ch)

{

if((ch='0'  ch='9') || (ch='a'  ch='f') ||(ch='A'  ch='F'))

return 1;

else

return 0;

}

int main()

{

char str[1000] = "123342abcdAFB1H";

int cnt = 0;

int i;

printf("input str:\n");

//gets(str);

i = 0;

while(str[i]str[i+1])

{

if(IsHexChar(str[i])  IsHexChar(str[i+1]))

{

cnt++;

printf(cnt==1?"0x%c%c":", 0x%c%c", str[i], str[i+1]);

i++;

i++;

}

else

break;

}

printf("\ncnt = %d\n", cnt);

return 0;

}

hex_int在c语言有什么功能

c语言有int转hex的库函数,数据类型转换与进制转换(hex转str,str转hex/ASCII,str转float/int,float/int转str,进制转换等)——C语言篇... 转载

2021-05-19 01:37:09

weixin_39878989

码龄5年

关注

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

引用一下的ASCII表方便对比学习。在单片机中其实是自动识别十进制与十六进制的,但是有时候需要对数据转换获取想要的进制数。下面介绍几种数据类型的转换,此外方法很多,只简单介绍本人愚见。

97076b76df964194b190af80b79937b9.jpg

一、字符串转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{

if( s_inchar[size1]='0' s_inchar[size1] = '9')

{

a_outtxt[size1] = s_inchar[size1] - 0x30;

}

else if( s_inchar[size1]='A' s_inchar[size1] = 'F')

{

a_outtxt[size1] = s_inchar[size1] - 'A'+10;

}

else if( s_inchar[size1]='a' s_inchar[size1] = 'f')

{

a_outtxt[size1] = s_inchar[size1] - 'a'+10;

}

}

for( size1=0,i=0;size1=s_len; size1++,i++)

{

a_outtxt[i]=(a_outtxt[size1]4)|a_outtxt[++size1];

}

a_outtxt[i] = '\0';

}

二、字符串转hex

这个是用于把字符串占两个字节的,合成为一个hex使用。比如:“FF” - 0xff 字符串占用的是两个字节的数其实是一个hex的,那么就要位移合成。

uint16_t stringtohex(uint8_t *buf, uint8_t * format, uint16_t us_length)

{

uint8_t tempcode;

uint16_t uslength = us_length * 2,us_count = 0,us_data;

for(us_data = 0;us_count uslength; us_count += 2,us_data++)

{

tempcode = format[us_data] 4;

if(tempcode = 9)

{

buf[us_count] = tempcode + '0';

}

else

{

buf[us_count] = tempcode - 10 + 'A';

}

tempcode = format[us_data] 0X0F;

if(tempcode = 9)

{

buf[us_count+1] = tempcode + '0';

}

else

{

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[...];即转换完成

}

4. C标准库的使用

sprintf((char *)srtbuf,"%d %f %s ", i8,float,buf );

相关资源:VC进制转换:10进制整型转2、8、16进制_c++int转16进制-C++代

如何用C语言实现将一段字符串以指定格式(hex等)写入到文件中,这个有什么函数可以实现?

可以看一下C的标准库函数fprintf(char* fmt, ...),应该和你说的函数差不多。

C语言:怎么将十六进制字符串转换成二进制字符串,谁帮我写个函数

十六进制转成十进制的函数:

//返回16进制字符串s对应的整数值,遇到任何一个非法字符都返回-1。

int HexToDec(char *s)

{

char *p = s;

//空串返回0。

if(*p == '\0')

return 0;

//忽略开头的'0'字符

while(*p == '0')

p++;

int dec = 0;

char c;

//循环直到字符串结束。

while(c = *p++)

{

//dec乘16

dec = 4;

//数字字符。

if(c = '0' c = '9')

{

dec += c - '0';

continue;

}

//小写abcdef。

if(c = 'a' c = 'f')

{

dec += c - 'a' + 10;

continue;

}

//大写ABCDEF。

if(c = 'A' c = 'F')

{

dec += c - 'A' + 10;

continue;

}

//没有从任何一个if语句中结束,说明遇到了非法字符。

return -1;

}

//正常结束循环,返回10进制整数值。

return dec;

}

十进制转成二进制的函数:

/*递归法求二进制数*/

#includestdio.h

void printb(int x,int n);

void main()

{

int x;

printf("input number:");

scanf("%d",x);

printf("number of decimal form: %d\n",x);

printb(x,sizeof(int)*8);

putchar('\n');

}

void printb(int x,int n)

{

if(n0)

{

putchar('0'+( (unsigned)(x (1(n-1) ) )(n-1)));

printb(x,n-1);

}

}

C语言格式怎么转换成hex格式?

在KEIL软件上建立工程项目,编辑C语言,编译调试无错后,点击project下的options for target,在output标签下勾选输出HEX,确定后就在编译一下会自动生成HEX文件在相同目录里。


文章名称:c语言字符串变hex函数 怎样将c语言转化为hex
文章转载:http://www.cdkjz.cn/article/dodhsdh.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220