救命!巨大的10进制数转为16进制数的方法!

tonny1025 2009-06-16 10:01:34
马上就要纳品了,却发现漏了个转换处理!
假设有一个很大的常规方法无法保存的10进数,暂存在字符串里。
要把它转为16进制的数该怎么弄啊?
谢谢各位了!
...全文
314 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sb3day 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 tonny1025 的回复:]

谢谢各位的建议!谢谢。
[/Quote]谢毛啊,你解决了就应该把解决方法也说一下
tonny1025 2009-06-24
  • 打赏
  • 举报
回复
谢谢各位的建议!谢谢。
woneedjob 2009-06-17
  • 打赏
  • 举报
回复
UP
光宇广贞 2009-06-17
  • 打赏
  • 举报
回复
楼主……我怎么觉得,在内存里面就是16进制保存的呢,只不过可以显示为10进制罢了,又不是BCD码……哪里来的十进制与十六进制之分……

楼主你把问题再捋一下。
pathuang68 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hqin6 的回复:]
如果lz的意思想把10进制的转换为16进制的字符串,还是有办法的!
[/Quote]
对,楼主的意思应该是将10进制的很大的数字(字符串)转换成16进制的字符串吧?
hjjdebug 2009-06-17
  • 打赏
  • 举报
回复
大数的存储依赖你定义的数据结构。该数据结构的定义依赖你对该数据的处理。
32位计算机处理的数据基本单元是32位。 但这并不妨碍你处理3200位或更大的数据。
因为你的更多的数据是用结构定义的。
我不知道你的需求,你自己依据需求定义结构并转换就可以了。
zy0118 2009-06-17
  • 打赏
  • 举报
回复
用最笨的方法,先实现 字符串数字 的 加法,减法,除法,然后就可以算出16进制的字符串了。
hongwei789007 2009-06-17
  • 打赏
  • 举报
回复
#include <stdio.h>
#define N 8
void tran(int num,int k)
{
int arr[N],i;
for (i=0;i<N;i++)
{
arr[i]=num%k;
num=num/k;
if (num==0)
break;
}
printf("转换为%d进制数为: ",k);
for (;i>=0;i--)
switch (arr[i])
{
case 10: printf("A");break;
case 11: printf("B");break;
case 12: printf("C");break;
case 13: printf("D");break;
case 14: printf("E");break;
case 15: printf("F");break;
default: printf("%d",arr[i]);
}
printf("\n\n\n");
}
void main()
{
int num,choo;
loop: printf("请选择功能:0.退出 1.十进制转二进制 2.十进制转八进制 3.十进制转十六进制\n");
scanf("%d",&choo);
switch (choo)
{
case 1:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,2);
goto loop;
case 2:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,8);
goto loop;
case 3:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,16);
goto loop;
case 0:break;
default :
printf("输入有误!请重新输入!\n");
goto loop;
}
}
hongwei789007 2009-06-17
  • 打赏
  • 举报
回复
那把你的方法说出来大家参考下啊。。。。。!
tonny1025 2009-06-17
  • 打赏
  • 举报
回复
谢谢各位,我是想转为16进制后存进CHAR数组里。不过现在找到一个回避大数值的解决方法了。结贴了。
cutestar 2009-06-17
  • 打赏
  • 举报
回复
要是你看了汇编的DWORD的四则运算的处理,你就会找到处理这个的方法了
konbunan 2009-06-17
  • 打赏
  • 举报
回复
使用堆栈!
太乙 2009-06-16
  • 打赏
  • 举报
回复
如果lz的意思想把10进制的转换为16进制的字符串,还是有办法的!
  • 打赏
  • 举报
回复
[Quote=引用楼主 tonny1025 的帖子:]
马上就要纳品了,却发现漏了个转换处理!
假设有一个很大的常规方法无法保存的10进数,暂存在字符串里。
要把它转为16进制的数该怎么弄啊?
谢谢各位了!
[/Quote]

晕,你10进制无法保存,就是太大了,16进制还是存不了啊,始终只有64位。
你考虑用大数库吧,gmp大数库。
ly309431053 2009-06-16
  • 打赏
  • 举报
回复
从a进制转到b进制:while(x1!=0)
{
xb+=(x1%b)*k;
x1/=b;
k*=a;}
其中x1是原始数据,是a进制。xb是转换过后的数值。这是程序的主要部分,其他自己添加一下就可以啦,你的问题就是把a=10转到b=16你试试
adventurelw 2009-06-16
  • 打赏
  • 举报
回复
10进制没法保存,16进制也一样没法保存啊
都只能作为字符串处理,从处理来说,10进制还是更直观吧。

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧