读书人

将一个整数变换为16进制(不得使用系统

发布时间: 2013-03-04 17:22:12 作者: rapoo

将一个整数转换为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
[解决办法]


#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;
}

读书人网 >C++

热点推荐