求 C语言程序 将16进制数,例如“0x00,0xff,0x3f”之类的数,转化为2进制数,急急急!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求 C语言程序 将16进制数,例如“0x00,0xff,0x3f”之类的数,转化为2进制数,急急急!!!相关的知识,希望对你有一定的参考价值。

参考技术A char i2[33]=0;/*放二进制字符串的缓冲*/
char* i16="0xff";
i=strtol(i16,NULL,16);/*读取16进制的值*/
itoa(i,i2,2);/*输出为二进制*/追问

能写出完整的程序么。。。

追答

#include
#include
void main()

char i2[33]=0;/*放二进制字符串的缓冲*/
char* i16="0xff";
long int i=strtol(i16,NULL,16);/*读取16进制的值*/
itoa(i,i2,2);/*输出为二进制*/
printf(" %s", i2 );
system("pause");

追问

呃。。。我需要是任意一个16进制数的转化,不是固定这个0xff的。。。

追答

#include
#include
void main()

char i2[33]=0;/*放二进制字符串的缓冲*/
char i16[10];
scanf("%s",i16);
long int i=strtol(i16,NULL,16);/*读取16进制的值*/
itoa(i,i2,2);/*输出为二进制*/
printf(" %s", i2 );
system("pause");

//什么稀烂 你不会吧固定的字符串用scanf 输入吗~!!

追问

要是能输入不就简单了么。。。我的数据是一个128*8的数组,1024个数,您让我一个一个敲啊。。。

追答

你只问了类似的数怎么转换 没有说你的数据是怎么样的
数组而已 循环判断 一下 照样很简单 越想越觉得你稀烂 ! 你慢慢玩吧别追问了- -! 哥伤不起!

参考技术B 转为2进制 输出 还 是 干什么 ????追问

把那些16进制数转成2进制,然后打出来,比如0x00,转完之后是 00000000,显示出来

求C语言将十六进制字符串转换为整型int的函数源代码,要求不能用库函数?

例如将char pcNumber[100] = "0xA12";转换为int型的数字2578。

/*
请输入十六进制数 : 120

十 六 进 制 数: 120
十 进 制 数: 288

Press any key to continue
*/
#include <ctype.h>
#include <stdio.h>
#define MAX 10
#define NewLine 10
main ()
char num16[MAX];
unsigned long cocnvertfactor = 1,num10 = 0;
char ch,j,i = 0;
printf("请输入十六进制数 : ");
while (((ch = getchar()) != NewLine) && (i < MAX))
if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F') || (ch >= 'a' && ch <= 'f'))
num16[i++] = ch; // 仅接收数字和英文前6个字母
for (j = 0;j < i;j++) num16[j] = toupper(num16[j]); // 小写字母转换成大写,其他字符不变
for (j = i - 1;j >= 0;j--) // 开始转换
if (isalpha(num16[j])) num10 = num10 + cocnvertfactor*(num16[j] - 'A' + 10);
else num10 = num10 + cocnvertfactor*(num16[j] - '0');
cocnvertfactor = 16*cocnvertfactor;

printf("\n十 六 进 制 数: ");
for (j = 0;j < i;j++) printf("%c",num16[j]);
printf("\n十 进 制 数: %u\n\n\n",num10);
参考技术A #include <stdio.h>

int main(void)

int n=0,i;
char s[100]="A12";
for(i=0;s[i];i++)

if(s[i]>='A'&&s[i]<='Z')n=n*16+s[i]-'A'+10;
else n=n*16+s[i]-'0';

printf("%d\n",n);
return 0;

参考技术B 自己做吧。给你点提示:
需要用到strlen函数,可以返回你得到的字符串长度,然后从pcNumber[2]开始,得到16进制数。
原型:extern unsigned int strlen(char *s);
用法:#include <string.h>
功能:计算字符串s的(unsigned int型)长度
说明:返回s的长度,不包括结束符NULL。
long int l_DEC = 0;
int i_Len = 0;

if (pcNumber[0] == "0" && (pcNumber[1] == "X" || pcNumber[1] == "x"))

i_Len = strlen(pcNumber);
for (int i = 2; i < i_Len; i++)

switch (pcNumber[i])

case "1":
l_DEC += 1 + pow(16, i_Len - i -1);
break;
……
case "F"
l_DEC += 15 + pow(16, i_Len - i -1);
break;
default:
l_DEC += 0;
break;



算法和思路都在上面了,希望能够给你足够的启发。

以上是关于求 C语言程序 将16进制数,例如“0x00,0xff,0x3f”之类的数,转化为2进制数,急急急!!!的主要内容,如果未能解决你的问题,请参考以下文章

急求十六进制转浮点数C程序!!!

求 C语言程序 将16进制数,例如“0x00,0xff,0x3f”之类的数,转化为2进制数,急急急!!!

C中的十六进制到字符数组

求c语言将十进制数转换为16进制的函数

Java字符串转16进制数组

将动态数据转换为数组中的十六进制