C语言如何把11位16进制字符串转成16进制数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何把11位16进制字符串转成16进制数?相关的知识,希望对你有一定的参考价值。
这个就是一个16进制数转10进制的程序先以字符串方式逐字符读入16进制数
然后对每个读入的字符依次做判断
t=s[i]-'0'
//临时变量t为当前判断的字符串的ascii码值减去字符'0'的ascii码值,这一步的作用是将字符型转换为整型以供计算
if(t<=9)
k=k*16+s[i]-'0'
//如果t≤9,说明原字符为'0'~'9',转换后直接得到对应数字0~9,因此直接将这个数字转换为十进制即可:k=k*16+s[i]-'0'即将当前位转换为十进制
else
k=k*16+s[i]-'a'+10
//如果t>9,说明原字符为'a'~'f',转换后不能得到对应数字,必须通过s[i]-'a'+10把字符'a'~'f'转换为数字10~15,再逐位转换为十进制。 参考技术A 主要有两个方法,其实都是对现有函数的使用:
1、方法1:
sscanf()
函数名:
sscanf
功
能:
从字符串格式化输入
用
法:
int
sscanf(char
*string,
char
*format[,argument,...]);
以上的
format
为
%x
就是将字符串格式化为
16
进制数
例子:
#include <stdio.h>
void main()
char* p = "0x1a";
int nValude = 0;
sscanf(p, "%x", &nValude);
printf("%d\r\n", nValude);
输出:
26
2、方法2:
strtol()
函数名:
strtol
功
能:
将字符串转换为长整数
用
法:
long
strtol(char
*str,
char
**endptr,
int
base);
上面的base就是我们要转换为几进制数
例子:
#include <stdio.h>
#include <stdlib.h>
void main()
char* p = "0x1b";
char* str;
long i = strtol(p, &str, 16);
printf("%d\r\n", i);
输出:
27 参考技术B 初一看,还以为是要把11进制数转化为16进制数,
其实16进制数就是由0~9十个数字以及A~F六个字母组成
上面就是16进制数,我猜你是要把它改为纯数字表示,
因为我们已经看惯了十进制数
在C语言中怎么把一个数转换成二进制然后输出
数据在内存中本来就是以二进制补码存放的,设法从高字节至低字节一个bit一个bit地输出到屏幕上即可。根据题面要求,输出过程还要做以下工作:从最高字节开始检测,全0的字节略去;
每8位增加输出一个空格。
代码如下:
12345678910111213141516//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"int main(void) char *p; unsigned i,n,x=1<<sizeof(int)*8-1; printf("Input an integer...\\n"); scanf("%d",&n); for(p=(char *)&n,i=sizeof(int)-1;i>0;i--) if(*(p+i)==0) x>>=8; else break; for(i=0;x;x>>=1) printf(++i%8 ? "%d" : "%d ",(n&x) || 0); printf("\\n"); return 0; 参考技术A 代码如下:#includevoidbn(inti)intk,j;k=i/2;j=i%2;if(k!=0)binary(k);//采用递归处理,直到为0时,然后递归printf("%d",j);intmain()chara;scanf("%c",&a);bn(a);return0;拓展延伸:什么是ASCII码:ASCII(AmericanStandardCodeforInformationInterchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC646。请注意,ASCII是AmericanStandardCodeforInformationInterchange缩写,而不是ASC2,有很多人在这个地方产生误解 参考技术B 二进制只有存储到char[]中,,,,,,,转换的过程,可以使用除2法
~~~~~
以上是关于C语言如何把11位16进制字符串转成16进制数?的主要内容,如果未能解决你的问题,请参考以下文章