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

c\u8bed\u8a00\u7f16\u7a0b \u628a\u5341\u8fdb\u5236\u8f6c\u6362\u4e3a\u5341\u516d\u8fdb\u5236

\u65b9\u6cd5\u4e00\uff1a#include#include 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');elsestr += ('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;}
\u65b9\u6cd5\u4e8c\uff1a
#include#include #include
#include #include using namespace std;int main()
{string decStr;cin >> decStr;int num = stoi(decStr);vectorv;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;elsehexStr += ('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 > strTemp;hexStr += strTemp;}elsehexStr += ('A' + temp - 10);}}cout << hexStr << endl;return 0;}
\u6269\u5c55\u8d44\u6599\uff1a
\u8fd8\u67093\u79cd\u65b9\u5f0f\u53ef\u4ee5\u5b9e\u73b0\uff0c\u5176\u4e2d\u4e24\u79cd\u662f\u4f7f\u7528\u7cfb\u7edf\u51fd\u6570\uff0c\u53e6\u4e00\u79cd\u662f\u76f4\u63a5\u81ea\u5df1\u7f16\u5199\u3002
\u4e0b\u9762\u7684\u4ee3\u7801\u5c31\u662f3\u79cd\u65b9\u5f0f\u7684\u5b9e\u73b0\uff0c\u5305\u62ec2\u4f4d\u7684\u6574\u6570\u548c\u4efb\u610f\u6574\u6570\uff082\u768431\u6b21\u65b9\u4ee5\u5185\uff09\u90fd\u53ef\u4ee5\u3002\u53ef\u81ea\u5df1\u9009\u62e9\u9700\u8981\u7684\u5b9e\u73b0\u65b9\u5f0f\u3002
\u5229\u7528\u7cfb\u7edf\u51fd\u6570\u6709
1. char * itoa ( int value, char * str, int base );value\u662f\u8981\u8f6c\u5316\u7684\u6570\u5b57\uff0cstr\u662f\u8f6c\u5316\u540e\u7684\u5b57\u7b26\u4e32\u5b58\u50a8\u7684\u4f4d\u7f6e\uff0cbase\u662f\u8fdb\u5236\u6570\uff08\u4f46\u662f\u8fd9\u4e2a\u51fd\u6570\u4e0d\u662f\u6807\u51c6C\u51fd\u6570\uff0c\u6709\u4e9b\u7f16\u8bd1\u5668\u662f\u4e0d\u652f\u6301\u7684\uff01\uff09\u3002\u6240\u4ee5\u4ee3\u7801\u53ef\u4ee5\u4e3a\uff1a
char buffer [33]; //\u7528\u4e8e\u5b58\u653e\u8f6c\u6362\u597d\u7684\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\uff0c\u53ef\u6839\u636e\u9700\u8981\u5b9a\u4e49\u957f\u5ea6 char * inttohex(int aa){ itoa (aa, buffer, 16); return (buffer);}
2. sprintf(str,"%x",value);str\u662f\u8f6c\u5316\u5b58\u50a8\u7684\u4f4d\u7f6e\uff0c%x\u8868\u793a\u5341\u516d\u8fdb\u5236\u683c\u5f0f\uff0cvalue\u662f\u8981\u8f6c\u5316\u7684\u6570\u5b57\u3002\u6240\u4ee5\u4ee3\u7801\u53ef\u4ee5\u4e3a\uff1a
char buffer [33]; //\u7528\u4e8e\u5b58\u653e\u8f6c\u6362\u597d\u7684\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\uff0c\u53ef\u6839\u636e\u9700\u8981\u5b9a\u4e49\u957f\u5ea6 char * inttohex(int aa){ sprintf(buffer, "%x", aa); return (buffer);}
3. \u81ea\u5df1\u7f16\u5199

\u5982\u679c\u53c2\u6570\u53ea\u8981\u4e24\u4f4d\u6570\u7684\u6574\u6570\uff0c\u90a3\u4e48\u5f88\u7b80\u5355\u3002
\u4ee3\u7801\u5982\u4e0b\uff1a
#include #include char buffer [33]; //\u7528\u4e8e\u5b58\u653e\u8f6c\u6362\u597d\u7684\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\uff0c\u53ef\u6839\u636e\u9700\u8981\u5b9a\u4e49\u957f\u5ea6 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\n", hex_str); return 0;}

\u4ee3\u7801\u5982\u4e0b\uff1a
#include "stdio.h" int main() { int num=0;int a[100]; int i=0; int m=0;int yushu; char hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};printf("\u8bf7\u8f93\u5165\u4e00\u4e2a\u5341\u8fdb\u5236\u6574\u6570\uff1a"); scanf("%d",&num); while(num>0) { yushu=num%16; a[i++]=yushu; num=num/16; } printf("\u8f6c\u5316\u4e3a\u5341\u516d\u8fdb\u5236\u7684\u6570\u4e3a\uff1a0x"); for(i=i-1;i>=0;i--)//\u5012\u5e8f\u8f93\u51fa {m=a[i];printf("%c",hex[m]); } printf("\n"); }
\u7a0b\u5e8f\u8fd0\u884c\u7ed3\u679c\uff1a

\u6269\u5c55\u8d44\u6599
C\u8bed\u8a00\u4e2d\uff0c\u5341\u8fdb\u5236\u8f6c\u6362\u5341\u516d\u8fdb\u5236\uff0c\u53ef\u4ee5\u5148\u8f93\u5165\u5341\u8fdb\u5236\u6574\u6570\uff0c\u7136\u540e\u53bb\u62fc\u5341\u516d\u8fdb\u5236\uff0c\u5341\u516d\u8fdb\u5236\u7531\u6570\u5b57 0~9\u3001\u5b57\u6bcd A~F \u6216 a~f\uff08\u4e0d\u533a\u5206\u5927\u5c0f\u5199\uff09\u7ec4\u6210\uff0c\u4f7f\u7528\u65f6\u5fc5\u987b\u4ee50x\u62160X\uff08\u4e0d\u533a\u5206\u5927\u5c0f\u5199\uff09\u5f00\u5934\uff0c\u53ea\u9700\u628a\u4e8c\u8fdb\u5236\u9664\u4ee516\u5f97\u5230\u4f59\u6570\u53bb\u4e0a\u9762\u5b9a\u4e49\u7684hex[16]\u6570\u7ec4\u8fdb\u884c\u53d6\u503c\u63a5\u53ef\u4ee5\u5f97\u5230\u8f6c\u6362\u7684\u6570\u5b57\u3002
\u53c2\u8003\u8d44\u6599\uff1a\u767e\u5ea6\u767e\u79d1-\u5341\u516d\u8fdb\u5236

在C语言中,可以使用`printf()`函数的格式控制符将十进制数转换为十六进制。具体来说,可以使用 `%x` 格式控制符。例如:

```c
int decimal_number = 255;
printf("%x", decimal_number);
```

上述代码将十进制数255转换为十六进制形式,并输出结果ff。

需要注意的是,在使用 `%x` 格式控制符时,输出的十六进制数字母会自动转换为小写形式。如果需要输出大写形式的字母,可以使用 `%X` 格式控制符。

#include<stdio.h>
void dec2hex(int x)
{ if(x>15)dec2hex(x/16);
printf("%c",x%16<10?x%16+48:x%16+55);
}
int main()
{ int n,x;
scanf("%d",&n);
while(n--)
{ scanf("%d",&x);
dec2hex(x);
printf("\n");
}
return 0;
}

#include <stdio.h>
#include <string.h>
#include <math.h>
void string2int(int *a,char dec[][30],int);

int main() {
int num=0,num2,hh[60];
int k,l,n=0;
char str[60][30];
printf("输入样例个数:");
scanf("%d",&k);

for(l=0;l<k;l++)
scanf("%d",hh+l);
string2int(hh,str,k);
for(n=0;n<k;n++){
k=strlen(str[n]);
for(l=k-1;l>=0;l--)
printf("%c",str[n][l]);
printf("\n");
}
return 0;
}

void string2int(int *h,char dec[][30],int len) {
int i ;
int p = 0;
int num=0;
char tmp,n[16]=

{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
for(i=0;i<len;i++){
do{
num=h[i]%16;
tmp=n[num];
dec[i][p]=tmp;
p++;
h[i]/=16;
}while(h[i]);
dec[i][p]='\0';
}
}

就是使用十进制的原因说的多么深奥多么神奇。。。。我觉得十六进制好点

在C语言中,可以使用sprintf函数将十进制转换为十六进制的字符串,也可以使用printf函数将十进制转换为十六进制并输出。下面给出两种实现的示例代码:
使用sprintf函数
#include <stdio.h>
int main()
{
int decimal = 255;
char hex[10];
sprintf(hex, "%x", decimal);
printf("Decimal %d is equivalent to hexadecimal %s\n", decimal, hex);
return 0;
}
输出结果为:
Decimal 255 is equivalent to hexadecimal ff
使用printf函数
#include <stdio.h>
int main()
{
int decimal = 255;
printf("Decimal %d is equivalent to hexadecimal %x\n", decimal, decimal);
return 0;
}
输出结果为:
Decimal 255 is equivalent to hexadecimal ff
在sprintf和printf函数中,"%x"格式说明符用于将整数转换为十六进制表示。如果需要输出大写字母表示的十六进制数,可以使用"%X"格式说明符。

扩展阅读:十六进制在线转换器 ... 原码 反码 补码 详解 ... 在线转换器生成器 ... c程十进制转十六进制 ... 十六进制计算在线 ... 十六进制对照表 ... 十六进制计算器 ... 中文十六进制翻译器 ... 万能转换器 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网