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进制数?的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何把11位16进制字符串转成16进制数?

C语言实现字符串中(10进制和16进制)转成十进制数

16进制字符串如何转化16进制数值

C语言程序,怎么把16进制转成字符:

C#如何把16进制字符串转成值相等的byte数组?

C++ builder中如何把unsigned char类型转换成16进制的输出