c语言怎么把十六进制转文字,例如E68891E99DA0求代码,如果可以讲讲思路就更好了

作者&投稿:鄣京 (若有异议请与网页底部的电邮联系)
c语言十六进制转十进制,求代码?~

#include
#include
#include

int main()
{
char strHex[8];
int i = 0, len = 0, temp = 0;
__int64 nDec = 0;

gets(strHex);

len = strlen(strHex);
for (i = 0; strHex[i] != '\0'; ++i)
{
switch(strHex[i])
{
case 'A': temp = 10; break;
case 'B': temp = 11; break;
case 'C': temp = 12; break;
case 'D': temp = 13; break;
case 'E': temp = 14; break;
case 'F': temp = 15; break;
default: temp = strHex[i]-'0'; break;
}
nDec += (temp*pow(16,len-1-i));
}
printf("%I64d",nDec);

return 0;
}
望采纳!

不要纠结与几进制转几进制这个问题,这其实都是一个意思,只要你弄懂原理就可以了,我给你一个十六进制转八进制的列子你好好研究一下。
#include
#include
using namespace std;

int main()
{
int n = 0, i = 0, j = 0, temp = 0, nNum = 0;
char ch;
string strHex[10];
string strBin[10];
string strOct[10];

cin>>n;
for (i = 0; i < n; ++i)
{
cin>>strHex[i];
}

//十六进制转二进制
for (i = 0; i < n; ++i)
{
j = 0;
while (strHex[i][j])
{
switch(strHex[i][j])
{
case '0': strBin[i] += "0000"; break;
case '1': strBin[i] += "0001"; break;
case '2': strBin[i] += "0010"; break;
case '3': strBin[i] += "0011"; break;
case '4': strBin[i] += "0100"; break;
case '5': strBin[i] += "0101"; break;
case '6': strBin[i] += "0110"; break;
case '7': strBin[i] += "0111"; break;
case '8': strBin[i] += "1000"; break;
case '9': strBin[i] += "1001"; break;
case 'A': strBin[i] += "1010"; break;
case 'B': strBin[i] += "1011"; break;
case 'C': strBin[i] += "1100"; break;
case 'D': strBin[i] += "1101"; break;
case 'E': strBin[i] += "1110"; break;
case 'F': strBin[i] += "1111"; break;
default:break;
}
++j;
}
}

//二进制转化为八进制
for (i = 0; i < n; ++i)
{
j = strBin[i].size()-1;//获得长度
while (strBin[i][j] && j>=0)
{
temp = 3;
nNum = 0;
while (temp-- && j>=0)
{
if ('1' == strBin[i][j])
{
switch(temp)
{
case 0: nNum += 4; break;
case 1: nNum += 2; break;
case 2: nNum += 1; break;
default:break;
}
}
--j;
}
strOct[i] += (nNum+'0');
}
}

//字符串逆序
for (i = 0; i < n; ++i)
{
temp = strOct[i].size()-1;
for (j = 0; j <= temp/2; ++j)
{
ch = strOct[i][j];
strOct[i][j] = strOct[i][temp-j];
strOct[i][temp-j] = ch;
}
}
//打印
for (i = 0; i < n; ++i)
{
j = 0;
while (strOct[i][j++] == '0');//跳过前面的0

for(--j; j < strOct[i].size(); ++j)
{
cout<<strOct[i][j]-'0';
}
/*if (i != n-1)*/
cout<<endl;
}

return 0;
}
望采纳!

gcvt将浮点型数转换为字符串, 取四舍五入

定义:

char *gcvt(double number, size_t ndigits, char *buf);

表头文件:

#include <stdlib.h>

说明:

gcvt()用来将参数number转换成ASCII码字符串,
参数ndigits表示显示的位数。gcvt()与ecvt()和fcvt()不同的地方在于, gcvt()所转换后的字符串包含小数点或正负符号。若转换成功,
转换后的字符串会放在参数buf指针所指的空间。

返回值:

返回一字符串指针, 此地址即为buf指针。

相关函数:

ecvt, fcvt, sprintf

示例:
#include<stdlib.h>
main()
{
double a=123.45;
double b=-1234.56;
char *ptr;
int decpt,sign;
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


用8086汇编语言编写 把16进制数转化为ASCII码
0fh mov byte ptr[di],al pop ax mov cl,4 ror ax,cl dec di pop cx loop again1 ;以下是将array数组中的16进制数转为ASCii码 lea si,array add si,2 mov cx,4again2: cmp byte ptr[si],9 jg next1 add byte ptr[si],30h jmp nex...

c语言、浮点数怎么变成16进制
数据类型的作用是说明数据和操作的意义,换句话说给定一块内存,可以说它是int类型,也可以说它是float类型。同时C语言中输出十六进制数,必须是整型数,因此,可以使用union联合体来输出浮点数的16进制。示例代码如下:include <stdio.h>union fi{float f;int i;} ufi;int main(){ufi.f = 1.1f;...

求一个c语言程序代码,可以把16进制数串转ascll码
分析题目,61刚好是a的ascii十六进制值,因此,只需要将‘6’‘1’转换成数值0x61就可以了,以下采用移位方法来转换#include<stdio.h>int main(){int i;char str[128],ch=0;gets(str);for( i=0;str[i];i++ ){if ( str[i]>='0' && str[i] <= '9' ){ch <<= 4 ; \/\/先左...

汇编语言:编一程序把键入的十六进制数转化 成十进制数。要求 1:在屏 ...
编一程序,把键入的十六进制数,在屏幕上用十进制数显示出来。键入的十六进制数,不限位数。如超出四位,只将最后四位做转换并显示。若键入非十六进制数,则不予显示,等待继续输入。键入回车符,结束输入。程序如下:

C语言中,如何把十六进制或八进制的值赋给一个变量
char num1 = 0x12;\/\/十六进制,十进制数是18 char num2 = 012; \/\/八进制,十进制数是10

c语言怎样定义并输入一个16进制数
C\/C++中,10进制数有正负之分。比如12表示正12,而-12表示负12。但8进制和16进制只能表达无符号的正整数,如果在代码中写-0xF2,C\/C++并不把它当成一个负数。2、以下是一些用法示例:int a = 0x100F; \/\/用一个十六进制数给变量a赋值 int b = 0x70 + a; \/\/用一个十六进制数+变...

C语言编程,把16进制数12a以10进制形式输出
include <stdio.h>int main(){int num = 0x12a;\/\/ 如果需要输入一个十六进制数的话,可以把下面这行的注释符号去掉\/\/scanf("%x", &num);printf("%d\\n", num);}\/\/ 这样就好了,利用系统自带的格式控制符就能完成了\/\/ %x 是十六进制 (注意,大写与小写在输出的时候对应十六进制的大写与...

怎样写一个c语言的程序:把十六进制数换为十进制的数,如十六进制的18转换...
和二进制化为十进制是一样的,十六进制的18转换为十进制:16*8^0+16*1^1。不知道你是不是这个意思?

C语言中八进制和16进制怎么表示
\/\/合法的八进制数 int a = 015; \/\/换算成十进制为 13 int b = -0101; \/\/换算成十进制为 -65 int c = 0177777; \/\/换算成十进制为 65535 \/\/非法的八进制 int m = 256; \/\/无前缀 0,相当于十进制 int n = 03A2; \/\/A不是有效的八进制数字 二、十六进制由数字 0~9、...

十六进制数在C语言里的表示方法是什么?
八进制:012 040 093 -01151 -0157 04663 -067756 051013 (在C\/C++中,八进制开头要加0,来说明这个整数是八进制数)十六进制:0xa 0x20 0x4b -0x269 0x6f 0x9b3 -0x6fee 0x520b(在C\/C++中,十六进制开头要加0x,来说明这个整数是十六进制数)...

南木林县15131711496: c语言怎么把十六进制转文字,例如E68891E99DA0 求代码 -
泣冯活血: gcvt将浮点型数转换为字符串, 取四舍五入 定义: char *gcvt(double number, size_t ndigits, char *buf); 表头文件: #include 说明: gcvt()用来将参数number转换成ASCII码字符串, 参数ndigits表示显示的位数.gcvt()与ecvt()和fcvt(...

南木林县15131711496: C语言程序,怎么把16进制转成字符: -
泣冯活血: 我想你的问题只是将数字转换为字符对吧,那么我就不帮你做全文多行的源码了,我做了一行转换的,你可以再在外层嵌套一个循环,并使用二维数组来实现全文多行的ASCII码转换:#include "Stdio.h"#include "Conio.h" int main(void) { int...

南木林县15131711496: c语言如何以输出16进制字符到文件 -
泣冯活血: 1、首先,定义一个字符串变量char和asc,保存转换的字符和转换后的16进制数.2、定义一个整型变量n,保存字符的ASCII码.3、给字符char赋值,其值为字符i.4、将字符char转换为ASCII码,并保存在n中.5、字符的ASCII码,进一步转换为16进制数,并保存在变量asc中.6、最后,输出字符转换为16进制数后的数值.7、运行程序,代码中的字符i,已成功转换为16进制数.

南木林县15131711496: c语言 怎么把十六进制数转换为字符串 -
泣冯活血: int a = 1000; char s[100];sprintf(s, "%x", a);//a的十六进制放入s

南木林县15131711496: C语言 字符与16进制之间的转换 -
泣冯活血: char a[]={0x06,0x12} 那么a[0]就是十六进制的06,a[1]就是十六进制的12.输出时直接打:printf("%2x %2x",a[0],a[1]),结果就是06 0C 想看字符的话:printf("%s",a),就行了.简单说,根本不用转换的,声明一下就行...

南木林县15131711496: 十六进制转换和字符 -
泣冯活血: #include "stdafx.h" #include "stdio.h" #include "time.h"// #include "stdlib.h"//void main(void){char a,b;srand((unsigned)time(NULL));a=32+rand()%94;//随机给a赋一个可打印字符printf("请输入一个字符!\nch=");scanf(" %c"...

南木林县15131711496: C语言 关于16进制转换成字符串 -
泣冯活血: 这是把字符串数组拼接成一个更大的数组. 先循环temp[0],把内容都放进tempbuf,然后循环temp[2],放进tempbuf,直到循环完数组的每一个内容

南木林县15131711496: c语言里面的十六进制如何转换成字符串 -
泣冯活血: 自己写的代码,还望采纳!!!#include <cstdlib>#include <iostream>#include <string> using namespace std; int main(int argc, char *argv[]) { char st[]="7C7C307C724C7C267C7C7C7C7C3A7C417C7C7C"; int ch[strlen(st)/2]; char c[strlen(st)...

南木林县15131711496: 设计一个C语言程序:输入一个十六进制的数,将其变为十进制后输出.(运用字符串的知识) -
泣冯活血: #include<math.h>#include<stdio.h> main() { char str[20]; int a,i,count=0; printf("input str:"); gets(str); for(i=0;i<strlen(str);i++) { if(str[i]>'0'&& str[i]<'9') count = count*16 + str[i]-'0'; else if(str[i]=='a' || str[i] == 'A') count = count*16 + 10; else if(str[i]=='b' || ...

南木林县15131711496: 如何将一个数组里的16进制数转换成汉字和字母呢?嘿嘿,哪位大侠帮一下忙吧! -
泣冯活血: 不知道你想怎么换,ASCII码最简单,数字+'0' 就是这个数字对应的字符 但是如果是GB编码,就有点麻烦了~要到网上找下GB编码,然后判断了.比如"我是"两个字的编码分别是:CED2,CAC7.而字母是二位16进制的.这又设计到判断.因为你不知道16位是两对两对的在一起形成字母,还是4位一起形成汉字.也就是说.CED2,这个到底是一个汉字,还是两个字母?方法也不难,判断头两个16进制,转换成2进制,判断最高为,如果是0,那就是字母,如果是1,那就是汉字.当然判断的方法也有很多,你也可以用位移操作,只留下最高位.方法因人而异.呕心的是,编码,确实有点多....你甚至可以自己给每个汉字取一个位标准.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网