进制转换并且显示

BlackRain007 2004-08-30 11:52:04
二、八、十、十六进制互相转换的C++函数是什么,相应的头文件是什么?
比如给个int a=100; 然后用个对话框显示出100的八进制或十六进制怎么做?
...全文
158 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
nodummy 2004-08-31
  • 打赏
  • 举报
回复
itoa直到的人还少?晕阿晕

如果你要说_ftoa知道的人少我到还相信
goodluckyxl 2004-08-30
  • 打赏
  • 举报
回复
微软计算器不是有这个功能么?
互相转化
晨星 2004-08-30
  • 打赏
  • 举报
回复
我是说10进制转其他进制。
晨星 2004-08-30
  • 打赏
  • 举报
回复
不太清楚。
与其在这里等,还不如自己写个转换函数,10分钟应该就搞定了。
BlackRain007 2004-08-30
  • 打赏
  • 举报
回复
我今天才发你就常看到,对于知道用itoa的人来说很简单,但是如果不知道这个函数呢?对于没有编程经验的新人来说,这个函数是很少有人知道的!
nodummy 2004-08-30
  • 打赏
  • 举报
回复
真不知道这个算是月x还是周x贴,常看到

其实只要有十进制的数值,只要用itoa就可以了
snow810211 2004-08-30
  • 打赏
  • 举报
回复
这是我上次保留下来的,但是我不明白~~

十进制转二进制:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 将 n 以二进制串存到 str
char* DtoB(char *str, unsigned long n)
{
int i;
unsigned long m = 0x80000000;
for(i = 0; i < 32; ++i)
{
str[i] = (m & n) ? '1' : '0';
m >>= 1;
}
str[32] = '\0';
return str;
}
// 从二进制串中读数
unsigned long BtoD(char *str)
{
int i;
unsigned long m;
unsigned long n = 0;
int len = strlen(str);
if (len > 32)
len = 32;
m = 0x80000000 >> (32 - len);
for(i = 0; i < len; ++i)
{
if (str[i] == '1') // 非法字符认作 0
n |= m;
m >>= 1;
}
return n;
}
BlackRain007 2004-08-30
  • 打赏
  • 举报
回复
十进制、八进制、十六进制都有自己的输出格式符,%d %o %x,可是二进制有没有对应的格式符啊????????
snow810211 2004-08-30
  • 打赏
  • 举报
回复
#include <iostream.h>
void main()
{
int a=100;
cout<<"Decimal :"<<dec<<a<<endl;
cout<<"Hexadecimal :"<<hex<<a<<endl;
cout<<"Octal :"<<oct<<a<<endl;
}

大侠们,我是一个新手,看书上写过这个,dec--10进制,hex--16进制,oct--8进制;
你们看这个可以吗?
zzuu 2004-08-30
  • 打赏
  • 举报
回复
进制有二进制,八进制,十进制有符号,十进制无符号,十六进制之分.
zzuu 2004-08-30
  • 打赏
  • 举报
回复
我实现了这样一个功能,程序都700多行,功能之强大,包证各位没见过!(我不是说大家做不出来,而是没有去做它,因为没什么用处).
微软的无法判断越界,没有有无符号之分!如果当成一个进制转换的话它是不合格的.我这个程序可用数的范围比一般的大,如果是8位的话,它的范围是-128--255(普通一般认为只能-128--127或0--255),其它的16位32位以此类推,可选整数的位数有8,16,32,十进制时有符号之分.
oldmanpushcart 2004-08-30
  • 打赏
  • 举报
回复
所有的数据(包括数字)在计算机存储器中都是按照二进制的方式来存储的。
我们平常编写程序和实际生产生活中之所以接触的大部分都是十进制是因为计算机帮我们转换好了的。

所以,不存在数据进制转换的问题,因为不管你怎么转到头来都是要用二进制存在存储器上。

我们所能做的只能像 米格 写的那样,只是在显示上变换而已。
ra3 2004-08-30
  • 打赏
  • 举报
回复
用 sprintf 函数很容易地如:

int i = 30;
char str[10];
sprintf(str, "%x", i); // 十进制转换为十六进制
sprintf(str, "%o", i); // 十进制转换为八进制


int x = 0x13;
char str[10];
sprintf(str, "%d", x); // 十六进制转换为十进制
niece 2004-08-30
  • 打赏
  • 举报
回复
我会用C做 命令行模式

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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