当前位置:首页 » 编程语言 » c语言转16进制库函数

c语言转16进制库函数

发布时间: 2024-07-21 02:29:55

c语言编程 把十进制转换为十六进制

方法一:

#include<iostream>
#include <string>
using namespace std;


string DecIntToHexStr(long long num)
{ string str; long long Temp = num / 16; int left = num % 16; if (Temp > 0) str +=

DecIntToHexStr(Temp); if (left < 10) str += (left + '0'); else str += ('A' + left - 10); return str;}
string DecStrToHexStr(string str){ long long Dec = 0; for (int i = 0; i < str.size(); ++i) Dec =

Dec * 10 + str[i] - '0'; return DecIntToHexStr(Dec);}int main()
{ string DecStr; while (cin >> DecStr) { cout << "0x" + DecStrToHexStr(DecStr); } return 0;}

方法二:


#include<iostream>
#include <string>
#include<vector>


#include <sstream>
#include <math.h>
using namespace std;int main()


{ string decStr; cin >> decStr; int num = stoi(decStr); vector<int>v; while (num) { int bit = num % 2; v.push_back(bit); num = num / 2; }


reverse(v.begin(), v.end()); string hexStr; if (v.size() % 4 == 0) { for (int i = 0; i < v.size() / 4; ++i) { int temp = 0, k = 3; for (int j = i * 4; j < (i +

1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; } if (temp <= 9) hexStr += temp; else hexStr += ('A' + temp - 10); } }

else { int zeroNum = 4 - v.size() % 4; for (int i = 0; i < zeroNum; ++i) v.insert(v.begin(), 0); for (int i = 0; i < v.size() / 4; ++i) { int temp = 0, k = 3; for

(int j = i * 4; j < (i + 1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; }
if (temp <= 9) { stringstream ss; string strTemp;

ss << temp; ss >> strTemp; hexStr += strTemp; } else hexStr += ('A' + temp - 10); } } cout << hexStr << endl; return 0;}

(1)c语言转16进制库函数扩展阅读:


还有3种方式可以实现,其中两种是使用系统函数,另一种是直接自己编写。

下面的代码就是3种方式的实现,包括2位的整数和任意整数(2的31次方以内)都可以。可自己选择需要的实现方式。

利用系统函数有

1. char * itoa ( int value, char * str, int base );value是要转化的数字,str是转化后的字符串存储的位置,base是进制数(但是这个函数不是标准C函数,有些编译器是不支持的!)。所以代码可以为:

char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){ itoa (aa, buffer, 16); return (buffer);}

2. sprintf(str,"%x",value);str是转化存储的位置,%x表示十六进制格式,value是要转化的数字。所以代码可以为:

char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){ sprintf(buffer, "%x", aa); return (buffer);}

3. 自己编写

如果参数只要两位数的整数,那么很简单。

代码如下:

#include <stdio.h>#include <stdlib.h> char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa)

{ sprintf(buffer, "%x", aa); return (buffer);} int main ()

{ int num; char * hex_str; printf ("Enter a number: "); scanf ("%d",&num); hex_str = inttohex (num); printf ("Hexadecimal number: %sH ", hex_str); return 0;}

❷ C语言编程:怎么把一个十进制数转换成为一个十六进制数

第一种:用来糊弄老师的,输入一个数采用16进制格式输出
#include <stdio.h>

int main()
{
int num = 0;

scanf("%d", &num);
printf("%x", num);

return 0;
}

第二种:
#include <stdio.h>
#include <string.h>

char oNumTable[6] = {'A', 'B', 'C', 'D', 'E', 'F'};
void dToO(int, char*);

int main()
{
int dNum;
char oNum[100] = {0};

//输入一个十进制数
scanf("%d", &dNum);

//调用转换函数,将十进制转换成以字符串表示的十六进制
dToO(dNum, oNum);

//输出以字符串表示的16进制数据
printf("%s\n", oNum);

return 0;
}

void dToO(int dNum, char* oNum)
{
char temp[100] = {0};

for (int i = 0; (dNum) && (i < 100) ; i++) {
temp[i] = (dNum % 16);
if (temp[i] > 9) {
temp[i] = oNumTable[temp[i] - 10];
}
else{
temp[i] += '0';
}
dNum /= 16;
}

char* p = temp;
while (*(p+1)) p++;

for (int i = 0; p != temp - 1; i++, p--) {
oNum[i] = *p;
}
}

❸ 如何用c语言实现10进制转换成16进制

#include<stdio.h>

#defineLEN100

char*decimal2Others(intvalue,char*string,intradix){/*十进制数转任意进制*/
/*除基数取余法:十进制数不断除以进制基数直至为零,每次相除取得余数之逆序即为转换结果*/
intremain,i=1,j=0;
inttemp[LEN];

while(value){/*除基数取余*/
remain=value%radix;
value=value/radix;
temp[i++]=remain;
}

while(--i){/*逆序存储*/
if(temp[i]>9)
string[j++]=temp[i]-10+'a';/*十以上进制处理*/
else
string[j++]=temp[i]+'0';
}
string[j]='';
returnstring;
}

intmain(void){
intn;
charstring[LEN];

printf("请输入十进制数:");
scanf("%d",&n);
putchar(' ');
puts("================================================================================ ");

printf("十六进制转换结果:");
decimal2Others(n,string,16);
puts(string);
putchar(' ');

getch();/*屏幕暂留*/
return0;
}

运行结果

❹ C语言调用函数编写把十进制整数n转换成十六进制怎么编程

思路:十进制整数转换为十六进制整数采用"除16取余,逆序排列"法。
具体做法是:用16整除十进制整数,可以得到一个商和余数;再用16去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为十六进制数的低位有效位,后得到的余数作为十六进制数的高位有效位,依次排列起来。

参考代码:

#include"stdio.h"
intmain()
{
intnum,a[100],i=0,m=0;
charhex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
scanf("%d",&num);
while(num>0)
{
a[i++]=num%16;
num=num/16;
}
printf("转化为十六进制的数为:");
for(i=i-1;i>=0;i--)//倒序输出
{
m=a[i];
printf("%c",hex[m]);
}
printf(" ");
}
/*
运行结果:
17
转化为十六进制的数为:11
*/

❺ 在c语言中用最简单的方法把十进制转化为十六进制

代码如下:

#include"stdio.h"
intmain()
{
intnum=0;
inta[100];
inti=0;
intm=0;
intyushu;
charhex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
printf("请输入一个十进制整数:");
scanf("%d",&num);
while(num>0)
{
yushu=num%16;
a[i++]=yushu;
num=num/16;
}
printf("转化为十六进制的数为:0x");
for(i=i-1;i>=0;i--)//倒序输出{
m=a[i];
printf("%c",hex[m]);
}
printf(" ");
}

程序运行结果:

(5)c语言转16进制库函数扩展阅读

C语言中,十进制转换十六进制,可以先输入十进制整数,然后去拼十六进制,十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头,只需把二进制除以16得到余数去上面定义的hex[16]数组进行取值接可以得到转换的数字。

❻ C语言--二进制转十六进制

看看这个行不行?希望对你有帮助……
#include "stdafx.h"
#include "stdio.h"//
#include "string.h"//
#include "conio.h"//
#include "stdlib.h"//
void convert(char *input, char *output){
int i=0,j,nx,lein,ii;
char cx;
lein=strlen(input);
if(nx=lein%4){//处理最左端不足4位的情况
for(cx=0;i<nx;(cx<<=1)+=(*(input+i++)=='1' ? 1 : 0));
*output=cx+(cx>9 ? 0x37 : '0');
i=1;
}

for(ii=nx;ii<lein;ii+=4){//每4位一组变换成字符
for(j=0,cx=0;j<4;(cx<<=1)+=(*(input+ii+j++)=='1' ? 1 : 0));
*(output+i++)=cx+(cx>9 ? 0x37 : '0');
}
*(output+i)=NULL;
}

void main(void){/*主程序*/
char i,ii,rc,(*pBin)[1001],output[251];
int nDec=0,n;
printf("要输入几组二进制数?\nnGroup=");
scanf("%d",&n);
if(!(pBin=(char (*)[1001])malloc(n*1001))){
printf("申请内存失败!\n");
exit(0);
}
for(ii=0;ii<n;ii++){
printf("请输入第%d个二进制数!\nBin%d=",ii+1,ii+1);
for(i=0;;){
if((rc=getch())==0xD || i==1000){
printf("\n");
break;//遇到回车或长度到1000位则结束输入
}
else if(rc=='\b' && i){//处理退位修改
printf("\b%c\b",' ');
i--;
}
else if(rc=='0'||rc=='1'){//只允许输入'1'和'0'
printf("%c",rc);//显示输入字符
if(!i && rc=='0') continue;//不要前导0
pBin[ii][i++]=rc;//存储输入字符
}
}
pBin[ii][i]=NULL;//设置字符串结束标记
}
for(i=0;i<n;i++){
convert(pBin[i],output);//调用自定义函数转换成十六进制串
printf("Case %d:0x%s\n",i+1,output);
}
free(pBin);
}

热点内容
民生银行pin密码是多少 发布:2024-11-26 05:31:24 浏览:774
sql获取日期部分 发布:2024-11-26 05:25:06 浏览:742
怎么才能把安卓数据转移到苹果手机上 发布:2024-11-26 05:14:35 浏览:850
手机对比参数配置常看的有哪些 发布:2024-11-26 05:01:23 浏览:890
qq默认存储路径修改 发布:2024-11-26 04:55:02 浏览:709
为什么吉利配置那么高 发布:2024-11-26 04:49:20 浏览:430
源码平台排名 发布:2024-11-26 04:44:49 浏览:998
电脑网络连接密码如何更改 发布:2024-11-26 04:39:20 浏览:203
安卓手机如何设置airpro自动弹窗 发布:2024-11-26 04:39:17 浏览:585
华为Ul编程 发布:2024-11-26 04:27:15 浏览:148