将一个整数变换为16进制(不得使用系统函数)
将一个整数转换为16进制(不得使用系统函数)
将一个整数转换为16进制(不得使用系统函数).希望是c++版本。谢谢
------解决方案--------------------
告诉你一个思路
假设被转换的数为n,首先将其对16取模,得到的结果就是对应16进制的最低位
将n除以16,得到的结果取整再对16取模,得到的结果是对应16进制的次低位
如此重复做以上两步,既可以得到最终结果
给你一个伪代码,自己转换成C++代码吧
ConvertInt2Hex:
dim n,hexStr
loop:
if n == 0
break;
dim tmp = n % 16
if tmp >= 0 && tmp <= 9
hexStr <- hexStr.append('0' + tmp)
else
hexStr <- hexStr.append('a'+tmp-10)
n <- n / 16
end loop
reverse(hexStr)
end ConvertInt2Hex
------解决方案--------------------
------解决方案--------------------
将一个整数转换为16进制(不得使用系统函数).希望是c++版本。谢谢
------解决方案--------------------
告诉你一个思路
假设被转换的数为n,首先将其对16取模,得到的结果就是对应16进制的最低位
将n除以16,得到的结果取整再对16取模,得到的结果是对应16进制的次低位
如此重复做以上两步,既可以得到最终结果
给你一个伪代码,自己转换成C++代码吧
ConvertInt2Hex:
dim n,hexStr
loop:
if n == 0
break;
dim tmp = n % 16
if tmp >= 0 && tmp <= 9
hexStr <- hexStr.append('0' + tmp)
else
hexStr <- hexStr.append('a'+tmp-10)
n <- n / 16
end loop
reverse(hexStr)
end ConvertInt2Hex
------解决方案--------------------
#include <stdio.h>
#include <string.h>
int main()
{
int input=0;
int temp=0;
int i=0;
int j=0;
char result[100];
printf("input a number:\n");
scanf("%d",&input);
while(input!=0)
{
temp=input%16;
if(temp>=0 && temp<10)
{
result[i]=temp+'0';
i++;
}
else
{
result[i]=temp+'A'-10;
i++;
}
input=input/16;
}
result[i]='\0';
for (j=strlen(result)-1;j>=0;j--)
{
printf("%c",result[j]);
}
printf("\n");
return 0;
}
------解决方案--------------------
# include <iostream>
# include <sstream>
using namespace std;
int main()
{
const char map[] = "0123456789ABCDEF";
unsigned int i = 0xABCDEF12;
stringstream buffer;
while (i)
{
buffer << map[i % 16];
i /= 16;
}
buffer << ends;
string tmp = buffer.str();
string s(tmp.rbegin(), tmp.rend());
cout << s << endl;
return 0;
}