社区
非技术区
帖子详情
怎样编程实现16进制数转10进制数?
freechopsticks
2005-10-23 05:55:16
我想请问的是,若用一个函数实现这个功能,是不是将16进制的数字作为输入,再返回相应的10进制值?
另外,16进制数在程序中如何表示呢,是用一个数组还是一个常量字符串呢?
函数的声明可不可以这么写:
int HexToDec(const char *pValue);?
...全文
237
2
打赏
收藏
怎样编程实现16进制数转10进制数?
我想请问的是,若用一个函数实现这个功能,是不是将16进制的数字作为输入,再返回相应的10进制值? 另外,16进制数在程序中如何表示呢,是用一个数组还是一个常量字符串呢? 函数的声明可不可以这么写: int HexToDec(const char *pValue);?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wxyeeis
2005-10-24
打赏
举报
回复
good
llf_hust
2005-10-23
打赏
举报
回复
//进制转换的辅助函数(helper)
//将一个字符转换成相应的十进制数字,以进行十进制运算
int Algorithms::ToInt(const char& ch)
{
if(ch >= '0' && ch <= '9')
{
return ch - '0';
}
else if(ch > '9' && ch < 'g')
{
return tolower(ch) - 'a' + 10;
}
else
{
return -1;
}
}
//上面函数的逆过程
char Algorithms::ToChar(const int& i)
{
if(i >= 0 && i <= 9)
{
return (char)(i + '0');
}
else
{
return (char)(i - 10 + 'a');
}
}
//实现进制转换,从N进制转换到M进制
//实现思想:转换成为熟悉的十进制数
//N进制的数XkXk-1...X2X1X0转换成十进制数的方法为:
//temp = X0 * N^0 + X1 * N^1 + ...
void Algorithms::Tran()
{
string param = "";//用于存放用户输入的数
string cM = "";
string cN = "";
int M = 0;//目的基数
int N = 0;//原基数
char ch = '\0';
string s= "";//用于存放结果
int temp= 0;//存放十进制数
int length= 0;
int j= 0;
int other= 0;
int i= 0;
do
{
cout<<"请输入一个整数和他的基数以及要转换的基数:"<<endl;
cin>>param>>cN>>cM;
length =param.size();
N = atoi(cN.c_str());
M = atoi(cM.c_str());
if(N < 2 || M < 2 || N > 16 || M > 16)
{
cout<<"基数错误!"<<endl;
goto exit;
}//基数错误
temp = 0;
for(i = 0; i < length; i++)
{
j = length - 1 - i;
other = Algorithms::ToInt(param[i]);//将字符转化成数
if(other >= N || other == -1)
{
cout<<"数字必须小于基数!"<<endl;
goto exit;
}
temp += other * pow(N, j);//将N进制数转换成十进制数的核心技术
}
s.erase(s.begin(), s.end());//结果容器清零
while(temp != 0)
{
s += (Algorithms::ToChar(temp % M));//将十进制数转换成M进制数的核心技术
temp = temp / M;
}
for(i = s.length() - 1; i >= 0; i--)
{
cout<<s[i];
}//用于输出
cout<<endl;
exit:cout<<"继续?(y/n)";
cin>>ch;
}while(tolower(ch) == 'y');//继续与否
}
进制转换相关习题
于是小丽有个想法,如果这个
数
不是回文
数
,但这个
数
在2进制或者
16进制
下是回文
数
,就算这个整
数
是半个回文
数
,比如417并不是回文,但417对应的
16进制
数
是1A1是回文
数
,因此417算半个回文
数
。十进制整
数
N和其他D(D的值为2、8、16)进制
数
的转换是计算机
实现
计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理:N = (N div d)×d + N mod d (其中:div 为整除运算,mod 为求余运算)。有两个整
数
N和D,N表示要转换的十进制非负整
数
,D代表要转换的进制(2、8或16)
汇编语言
16进制
转
10进制
使用8086汇编,输入一个
16进制
的
数
,程序把该
16进制
数
转
换为相应的
10进制
数
输出 程序运行截图: 要
实现
这样一个程序,思路可以是这样的: 1.由于我们读入的键盘输入是ASCII码表示的,且输入一个字符便得到一个ASCII码,如输入ab,程序中可以得到61h和62h。现在的问题是怎么把这些输入的字符表示成一个完整的
数
。对于这个问题,我们可以把每次输入的字符的ASCI...
10进制
数
转
换为
16进制
数
,c++
10进制
数
转
换为
16进制
数
,c++ #include<iostream> using namespace std; int main() { int n, i = 0; char arr[1000];//定义一个char型
数
组用来保存
16进制
数
据 cin >> n;//输入n if( n == 0 ){ cout<<"0";//如果n = 0,则直...
C语言
实现
将
16进制
数
转
成
10进制
数
C语言
实现
将
16进制
数
转
成
10进制
数
int main(int argc, char *argv[]) { hextoDec(0xffff); return 0; } void hextoDec(int hex){ int sum=0,mul=1; int i,r; int count=0; do{ r=hex%16; for(i=0;i<count;i++) ...
16进制
转
10进制
的
编程
实践指南
在C/C++中,进制转换通常涉及到标准库中的几个函
数
,例如strtolstrtoulhtons等。这些函
数
可以帮助程序员在不同的进制之间进行转换。// 十六进制转十进制// 将十进制
数
转
换为字符串printf("十六进制
数
%s 转换为十进制为 %s\n", hex_str, dec_str);// 十六进制转二进制printf("十六进制
数
%X 转换为网络字节序的二进制为 %lX\n", decimal, bin_port);return 0;
非技术区
15,445
社区成员
58,111
社区内容
发帖
与我相关
我的任务
非技术区
C/C++ 非技术区
复制链接
扫一扫
分享
社区描述
C/C++ 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章