C语言 关于16c语言进制转换换成字符串

谁有10进制转16进制的程序,c语言的,能否共享一下? - 维库电子市场网
谁有10进制转16进制的程序,c语言的,能否共享一下?
作者:c555 栏目:
谁有10进制转16进制的程序,c语言的,能否共享一下?&&我需要将一个三位的10进制数(最大到255)转换为两位的16进制数,不知谁写过类似的程序,能否共享一下?
作者: computer00 于
8:40:00 发布:
小意思了unsigned
result[5];result[0]='0';result[1]='x';if((in&&4)&10) {&&result[2]=(in&&4)+'0'; }else {&&result[2]=(in&&4)-10+'A'; }if((in & 0x0F)&10) {&&result[3]=(in & 0x0F)+'0'; }else {&&result[3]=(in & 0x0F)-10+'A'; }result[4]=0;
作者: acone 于
9:52:00 发布:
不明白你说的意思根本就不用转换呀,在内存中的保存方式都是一样的,输出的时候利用不同的方式就行了.我说的是计算机上的C语言.
作者: 平常人 于
10:24:00 发布:
请楼主说清楚点你的输入是ASCII码还是BCD码?输入如何存放?你要的输出是要ASCII码还是在程序中的一个变量?
作者: c555 于
10:48:00 发布:
如果我输入10进制的120,应该能给我转换成16进制的0x78.&&
作者: HWM 于
10:54:00 发布:
x=d1*100+d2*10+d3;(其中d1,d2,d3为百,十,个位数)&
作者: 王紫豪 于
11:05:00 发布:
sprintf 不用白不用&
作者: gbchang 于
11:20:00 发布:
如果求小程序,也许这样较好:语言:c语言的功能:10进制转16进制,例如:120 =& &78&入口: *或者int或者unsigned 什么的出口: *(不会有int需求的吧:))圈圈已经给了答案。王紫豪的思维要借鉴。当然,如果是稍大点的程序,还是别求人的好,没人有时间给您编的。:)
作者: 平常人 于
11:25:00 发布:
这么说你的输入是ASCII,而输出是程序中的一个变量unsigned
in[3];result = (in[2]-'0')*100 + (in[1]-'0')*10 + (in[0]-'0');用sprintf()不能白用,你要付出程序存储空间的代价!
作者: c555 于
17:37:00 发布:
我改写的,不知将转换后的16进制放到哪里了?unsigned
esult[5];esult[0]=0x02;&&//16进制表示,但实际数值是10进制的222esult[1]=0x02;esult[2]=0x02;esult[0]='0';esult[1]='x';if((in&&4)&10){&&esult[2]=(in&&4)+'0';}else{&&esult[2]=(in&&4)-10+'A';}if((in & 0x0F)&10){&&esult[3]=(in & 0x0F)+'0';}else{&&esult[3]=(in & 0x0F)-10+'A';}esult[4]=0;
作者: computer00 于
1:22:00 发布:
晕…………楼主你要说明,被转换的是什么,转换的结果是什么输入'2','2','2'这叫做字符输入(例如我们常用的从PC键盘输入,或者通过串口发送字符'2')。而数值则是指123,0x22,033等等这些,是不带引号的,直接表示它多大。数值无论按什么进制书写,它的最终结果都是一样的,例如,10,或者0x0A,或者012等,都是表示数值10。通常,说要把某某转换成十六进制的,那么意思就是说,把结果用字符串来表示,例如&0x0A&,这样可以直接把该字符串发送给显示设备显示,这里的0x0A已经没有数值的意思了,而是一个字符串。如果最终需要的是一个数值,就无须说明是什么进制的,因为任何进制的数,最终的结果都要保证一致的。惟有按字符串格式表达时,才需要用到进制。例如输入一字符串&11&,那么你可以说明它是什么进制的,如果不说明,那么则默认是十进制。好了,现在楼主再来说说,你要的是怎样的做法?将一个按十进制表示的字符串转换成一个按十六进制表示的字符串?还是将一个按十进制表示的字符穿转换成数值?还是将一个数值转换十六进制表示的字符串?
作者: 汽车电子 于
7:25:00 发布:
如下假设输入为In[3] 字符串用C库函数&&&&hex = atoi(In);非压缩BCD码用&&&&&&hex = In[0]*100 + In[1]*10 + In[2];压缩BCD码用&&&&&&&&hex = In[0]*100 + (In[1]&&4)*10 + In[1]&0x0f;(请自行考虑高低排列)把Hex值变成Hex字符,如圈圈所示
作者: c555 于
8:02:00 发布:
这么说吧,&&&我的电路是从电话机读的数值,假设用电话机拨一个120号的号码,则按电话机的1键、2键、0键,则读到程序中就是0X01、0X02、0X00。我的目的就是把我读到的0X01、0X02、0X00转成16进制,转换后应该为0X78。
作者: computer00 于
9:07:00 发布:
转成“0x78”这个字符串吗?就不是数值了。你说十六进制,意思就是指字符串了。unsigned
result[5];in=InputBuffer[0]*100+InputBuffer[1]*10+InputBuffer[2];&&&//将输入的三位转换成数值//例如,如果输入依次为1,2,3,那么in就等于123,或者说等于0x7B。result[0]='0';result[1]='x';if((in&&4)&10){&&result[2]=(in&&4)+'0';}else{&&result[2]=(in&&4)-10+'A';}if((in & 0x0F)&10){&&result[3]=(in & 0x0F)+'0';}else{&&result[3]=(in & 0x0F)-10+'A';}result[4]=0;最后转换的结果在result的数组中,只要将该数组发给LCD或者串口等设备,就能显示了。注意字符串一般是用来显示或者传送用的,而不能拿来当数值计算。
作者: c555 于
10:29:00 发布:
非常感谢computer00用一句 in=InputBuffer[0]*100+InputBuffer[1]*10+InputBuffer[2]; 指令就完成了!
作者: computer00 于
10:42:00 发布:
注意以后描述此类问题时要说清楚,否则别人容易误解。像你这里,提到十六进制就是一个误解,事实上你要的结果是一个数值。你应该这样描述:一个3位的十进制数,每一位被保存在一个变量中,我如何把它转换成一个数并保存在一个型的变量中?
作者: 平常人 于
11:33:00 发布:
感慨:理工类的学生应该增加一门课――作文课感觉许多搞理工的人语文的表达能力很差,经常不能准确地表达自己的思想;问问题的时候,别人不知他到底要求什么;回答问题的时候,也说不清自己的意图;文章写不出来或写不出像样的文章,甚至连求职简历都要别人代劳。强烈建议理工类的院系应该给学生们开设“作文课”
作者: 王紫豪 于
13:39:00 发布:
咱们都被楼主忽悠了,哈哈!&
作者: ljxh401 于
14:15:00 发布:
一直不明白为什么要转十进制的在RAM中 你喜欢叫他10H可以 叫16也罢
作者: 西安周公 于
1:34:00 发布:
:a= c/16;b= c%16
作者: 程序匠人 于
14:07:00 发布:
十进制,八进制,十六进制,二进制相互转换大全点击下面连接进入
作者: ayi 于
10:07:00 发布:
看晕了一个小问题,讨论了那么久,看来大家的时间还是挺充裕的.
讨论内容:
Copyright &
浙ICP证030469号C语言&数字字符串转换为十六进制格式的函数
今天在测试生产系统的时候,需要输入测试数据,网上没有找到可用的代码,自己写了一个,有需要的可以使用一下。
在网络通信中,服务端收到的内容都是以16进制存在的8位串,在模拟一个客户端发包的时候,需要将模拟数据转换成16进制。
&例如一段数据
char test[]="1400"
要把他转换成
00&00 00 85 04 05 06 03
02 01 01 01 00 09 01 11
02 16 14 00
16进制串。
void CharToHex(char * dest, char * buffer , int len)
&while(i&len)
&&temp=buffer[i];
&&if((temp&=0x30)&&(temp&=0x39))
&&&temp=temp-0x30;
&&&dest[j]=temp&&4;
if((temp&=0x41)&&(temp&=0x46))
&&&temp=temp-0x41+0x0A;
&&&dest[j]=temp&&4;
if((temp&=0x61)&&(temp&=0x66))
&&&temp=temp-0x61+0x0A;
&&&dest[j]=temp&&4;
&&&dest[j]=0x00;
//&&dest[j]=dest[j]&&4;
&&temp=buffer[i+1];
&&if((temp&=0x30)&&(temp&=0x39))
&&&temp=temp-0x30;
&&&dest[j]=dest[j]|
if((temp&=0x41)&&(temp&=0x46))
&&&temp=temp-0x41+0x0A;
&&&dest[j]=dest[j]|
if((temp&=0x61)&&(temp&=0x66))
&&&temp=temp-0x61+0x0A;
&&&dest[j]=dest[j]|
&&&dest[j]=dest[j]|0x00;
附一个十六进制到字符串转换的方法。
void HextoString(unsigned char *digest,char* buff,int len)
&char *ptr =
&for (i = 0; i & i++) {
&&sprintf (ptr,"x",
digest[i]);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。c语言字符串 数字转换函数大全 - 心心程序博客 - 博客园
最近学数据结构老是做实验常用到字符串和数字的转换想找却发现网上的资料太散所以搜集整理一下 方便以后再用
atof(将字符串转换成浮点型数)atoi(将字符串转换成整型数)atol(将字符串转换成长整型数)strtod(将字符串转换成浮点数)strtol(将字符串转换成长整型数)strtoul(将字符串转换成无符号长整型数)toascii(将整型数转换成合法的ASCII 码字符)toupper(将小写字母转换成大写字母)tolower(将大写字母转换成小写字母)
&&&& atof(将字符串转换成浮点型数)相关函数 atoi,atol,strtod,strtol,strtoul表头文件 #include &stdlib.h&定义函数 double atof(const char *nptr);函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数&&&& 字或正负符号才开始做转换,而再遇到非数字或字符串结束时&&&& ('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负&&&& 号、小数点或E(e)来表示指数部分,如123.456或123e-2。&返回值 返回转换后的浮点型数。附加说明 atof()与使用strtod(nptr,(char**)NULL)结果相同。& 范例 /* 将字符串a 与字符串b转换成数字后相加*/&&&& #include&stdlib.h&&&&& main()&&&& {&&&& char *a=&-100.23&;&&&& char *b=&200e-2&;&&&&&&&& c=atof(a)+atof(b);&&&& printf(&c=%.2f\n&,c);&&&& }& 执行 c=-98.23&&&& atoi(将字符串转换成整型数)相关函数 atof,atol,atrtod,strtol,strtoul表头文件 #include&stdlib.h&定义函数 int atoi(const char *nptr);函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数&&&& 字或正负符号才开始做转换,而再遇到非数字或字符串结束时&&&& ('\0')才结束转换,并将结果返回。&返回值 返回转换后的整型数。附加说明 atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。& 范例 /* 将字符串a 与字符串b转换成数字后相加*/&&&& #include&stdlib.h&&&&& mian()&&&& {&&&& char a[]=&-100&;&&&& char b[]=&456&;&&&&&&&& c=atoi(a)+atoi(b);&&&& printf(c=%d\n&,c);&&&& }& 执行 c=356&&&& atol(将字符串转换成长整型数)相关函数 atof,atoi,strtod,strtol,strtoul表头文件 #include&stdlib.h&定义函数 long atol(const char *nptr);函数说明 atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数&&&& 字或正负符号才开始做转换,而再遇到非数字或字符串结束时&&&& ('\0')才结束转换,并将结果返回。&返回值 返回转换后的长整型数。附加说明 atol()与使用strtol(nptr,(char**)NULL,10);结果相同。& 范例 /*将字符串a与字符串b转换成数字后相加*/&&&& #include&stdlib.h&&&&& main()&&&& {&&&& char a[]=&&;&&&& char b[]=& &;&&&&&&&& c=atol(a)+atol(b);&&&& printf(&c=%d\n&,c);&&&& }& 执行 c=&&&& gcvt(将浮点型数转换为字符串,取四舍五入)相关函数 ecvt,fcvt,sprintf表头文件 #include&stdlib.h&定义函数 char *gcvt(double number,size_t ndigits,char *buf);函数说明 gcvt()用来将参数number转换成ASCII码字符串,参数ndigits表示&&&& 显示的位数。gcvt()与ecvt()和fcvt()不同的地方在于,gcvt()所&&&& 转换后的字符串包含小数点或正负符号。若转换成功,转换后的字&&&& 符串会放在参数buf指针所指的空间。&返回值 返回一字符串指针,此地址即为buf指针。附加说明& 范例 #include&stdlib.h&&&&& main()&&&& {&&&& double a=123.45;&&&& double b=-1234.56;&&&& char *&&&& int decpt,&&&& gcvt(a,5,ptr);&&&& printf(&a value=%s\n&,ptr);&&&& ptr=gcvt(b,6,ptr);&&&& printf(&b value=%s\n&,ptr);&&&& }& 执行 a value=123.45&&&& b value=-1234.56&&&& strtod(将字符串转换成浮点数)相关函数 atoi,atol,strtod,strtol,strtoul表头文件 #include&stdlib.h&定义函数 double strtod(const char *nptr,char **endptr);函数说明 strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上&&&& 数字或正负符号才开始做转换,到出现非数字或字符串结束时&&&& ('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇&&&& 到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr字&&&& 符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或&&&& 123e-2。&返回值 返回转换后的浮点型数。附加说明 参考atof()。& 范例 /*将字符串a,b,c 分别采用10,2,16 进制转换成数字*/&&&& #include&stdlib.h&&&&& mian()&&&& {&&&& char a[]=&&;&&&& char b[]=&&;&&&& char c[]=&ffff&;&&&& printf(&a=%d\n&,strtod(a,NULL,10));&&&& printf(&b=%d\n&,strtod(b,NULL,2));&&&& printf(&c=%d\n&,strtod(c,NULL,16));&&&& }& 执行 a=&&&& b=512&&&& c=65535&&&& strtol(将字符串转换成长整型数)相关函数 atof,atoi,atol,strtod,strtoul表头文件 #include&stdlib.h&定义函数 long int strtol(const char *nptr,char **endptr,int base);函数说明 strtol()会将参数nptr字符串根据参数base来转换成长整型数。参&&&& 数base范围从2至36,或0。参数base代表采用的进制方式,如base&&&& 值为10则采用10进制,若base值为16则采用16进制等。当base值为0&&&& 时则是采用10进制做转换,但遇到如'0x'前置字符则会使用16进制&&&& 做转换。一开始strtol()会扫描参数nptr字符串,跳过前面的空格&&&& 字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字&&&& 符串结束时('\0')结束转换,并将结果返回。若参数endptr不为&&&& NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返&&&& 回。&返回值 返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno&&&& 中。附加说明 ERANGE指定的转换字符串超出合法范围。& 范例 /* 将字符串a,b,c 分别采用10,2,16进制转换成数字*/&&&& #include&stdlib.h&&&&& main()&&&& {&&&& char a[]=&&;&&&& char b[]=&&;&&&& char c[]=&ffff&;&&&& printf(&a=%d\n&,strtol(a,NULL,10));&&&& printf(&b=%d\n&,strtol(b,NULL,2));&&&& printf(&c=%d\n&,strtol(c,NULL,16));&&&& }& 执行 a=&&&& b=512&&&& c=65535&&&& strtoul(将字符串转换成无符号长整型数)相关函数 atof,atoi,atol,strtod,strtol表头文件 #include&stdlib.h&定义函数 unsigned long int strtoul(const char *nptr,char&&&& **endptr,int base);
函数说明 strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整&&&& 型数。参数base范围从2至36,或0。参数base代表采用的进制方&&&& 式,如base值为10则采用10进制,若base值为16则采用16进制数&&&& 等。当base值为0时则是采用10进制做转换,但遇到如'0x'前置字符&&&& 则会使用16进制做转换。一开始strtoul()会扫描参数nptr字符串,&&&& 跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,&&&& 再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。若&&&& 参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符&&&& 指针由endptr返回。&返回值 返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno&&&& 中。附加说明 ERANGE指定的转换字符串超出合法范围。& 范例 参考strtol()&&&& toascii(将整型数转换成合法的ASCII 码字符)相关函数 isascii,toupper,tolower表头文件 #include&ctype.h&定义函数 int toascii(int c)函数说明 toascii()会将参数c转换成7位的unsigned char值,第八位则会被&&&& 清除,此字符即会被转成ASCII码字符。&返回值 将转换成功的ASCII码字符值返回。& 范例 #include&stdlib.h&&&&& main()&&&& {&&&& int a=217;&&&&&&&& printf(&before toascii () : a value =%d(%c)\n&,a,a);&&&& b=toascii(a);&&&& printf(&after toascii() : a value =%d(%c)\n&,b,b);&&&& }& 执行 before toascii() : a value =217()&&&& after toascii() : a value =89(Y)&&&& tolower(将大写字母转换成小写字母)相关函数 isalpha,toupper表头文件 #include&stdlib.h&定义函数 int tolower(int c);函数说明 若参数c为大写字母则将该对应的小写字母返回。&返回值 返回转换后的小写字母,若不须转换则将参数c值返回。附加说明& 范例 /* 将s字符串内的大写字母转换成小写字母*/&&&& #include&ctype.h&&&&& main()&&&& {&&&& char s[]=&aBcDeFgH12345;!#$&;&&&&&&&& printf(&before tolower() : %s\n&,s);&&&& for(i=0;I&sizeof(s);i++)&&&& s[i]=tolower(s[i]);&&&& printf(&after tolower() : %s\n&,s);&&&& }& 执行 before tolower() : aBcDeFgH12345;!#$&&&& after tolower() : abcdefgh12345;!#$&&&& toupper(将小写字母转换成大写字母)相关函数 isalpha,tolower表头文件 #include&ctype.h&定义函数 int toupper(int c);函数说明 若参数c为小写字母则将该对映的大写字母返回。&返回值 返回转换后的大写字母,若不须转换则将参数c值返回。附加说明& 范例 /* 将s字符串内的小写字母转换成大写字母*/&&&& #include&ctype.h&&&&& main()&&&& {&&&& char s[]=&aBcDeFgH12345;!#$&;&&&&&&&& printf(&before toupper() : %s\n&,s);&&&& for(i=0;I&sizeof(s);i++)&&&& s[i]=toupper(s[i]);&&&& printf(&after toupper() : %s\n&,s);&&&& }& 执行 before toupper() : aBcDeFgH12345;!#$&&&& after toupper() : ABCDEFGH12345;!#$
本文来自CSDN博客,转载请标明出处:C语言十六进制字符串转换为字节数组_小组_ThinkSAAS
C语言十六进制字符串转换为字节数组
C语言十六进制字符串转换为字节数组
十六进制字符串转换为字节数组
char* out2=new char[strlen("FD0041")/2];
int count=0;
for(char *s="FD0041";strlen(s)&0;s+=2)
if(*s&='0' && *s&='9')
out2[count]=*s-'0';
else if(*s&='A'&& *s&='F')
out2[count]=*s-'A'+10;
if(strlen(s)&1)
out2[count]*=16;
if(*(s+1)&='0' && *(s+1)&='9') out2[count++]+=(*(s+1)-'0');
if(*(s+1)&='A'&& *(s+1)&='F') out2[count++]+=(*(s+1)-'A'+10);
delete[] out2;
用户评论(0)
开发技术学习小组列表
PHP开发框架
缓存Memcache
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
手机客户端
ThinkSAAS接收任何功能的Iphone(IOS)和Android手机的客户端定制开发服务
让ThinkSAAS更好,把建议拿来。
iphone扫码下载客户端

我要回帖

更多关于 c语言进制转换 的文章

 

随机推荐