网上科普有关“c语言编程 把十进制转换为十六进制”话题很是火热,小编也是针对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; 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 << temp;ss >> strTemp;hexStr += strTemp; } elsehexStr += ('A' + temp - 10); } } cout << hexStr << endl; return 0;}
扩展资料:
还有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\n", hex_str);? return 0;}
关于“c语言编程 把十进制转换为十六进制”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
本文来自作者[映凝]投稿,不代表小熊号立场,如若转载,请注明出处:https://xx-scm.com/cshi/202607-178915.html
评论列表(4条)
我是小熊号的签约作者“映凝”!
希望本篇文章《c语言编程 把十进制转换为十六进制》能对你有所帮助!
本站[小熊号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育
本文概览:网上科普有关“c语言编程 把十进制转换为十六进制”话题很是火热,小编也是针对c语言编程 把十进制转换为十六进制寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问...