在c++中怎么将一个数用十六进制和八进制输出(利用io输入输出流)

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-16
C++中怎样完成将一个十进制转换成八进制、十六进制数的功能

1、C语言打印八进制是通过%o,(百分号和小写字母o组成)打印输出的,首先八进制017的打印输出,实现以下代码段,代码段是先保存一个8进制的数字,然后通过%o的方式输出八进制。

2、代码段编译通过后运行查看结果,可以看到结果就是17,八进制打印出八进制,不会有什么变化。

3、十进制表示的数字以八进制的格式打印出来看看结果,首先通过计算机得到十进制的数字20等于八进制的24,具体如下图所示,左边八进制,右边十进制。

4、然后实现以下代码段,十进制的数字20以八进制的格式进行打印输出,代码段是先保存一个十进制的数字20,然后通过%o的方式输出八进制。

5、代码段编译通过后运行查看结果,可以看到十进制数字20以八进制的格式输出的结果是24,和通过计算机得出的结果是一致的。

6、十六进制表示的数字以八进制的格式打印出来的结果,首先通过计算机得到十六进制的数字0xAF等于八进制的257。

7、然后实现以下代码段,十六进制的数字0xAF,以八进制的格式进行打印输出。代码段是先保存一个十六进制的数字0xAF,然后通过%o的方式输出八进制。

// 使用cout/pintf输出16进制,8进制,2进制数据
#include
#include
#include
using namespace std;
int main()
{
printf(" 使用cout/pintf输出16进制,8进制,2进制数据
");
printf(" - http://blog.csdn.net/morewindows/article/details/16358511 -
");
printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) --

");

int a = 100;
cout<<"十进制 "<<a<<endl;
cout<<"十六进制 "<<hex<<a<<endl;
cout<<"八进制 "<<oct<<a<<endl;


return 0;
}

默认状态下,数据按十进制输入输出。如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。

参考代码:

#include <iostream>
using namespace std ;
int main()
{
    int i, j, k, l;
    cout<<"Input i(oct), j(hex), k(hex), l(dec):"<<endl;
    cin>>oct>>i; //输入为八进制数
    cin>>hex>>j; //输入为十六进制数
    cin>>k; //输入仍为十六进制数
    cin>>dec>>l; //输入为十进制数
    cout<<"hex:"<<"i="<<hex<<i<<endl;
    cout<<"dec:"<<"j="<<dec<<j<<''<<"k="<<k<<endl;
    cout<<"oct:"<<"l="<<oct<<l;
    cout<<dec<<endl; //恢复十进制输出状态
    return 0;
}
【执行结果】:
(1)输出提示:Input i(oct), j(hex), k(hex), l(dec):
(2)此时从键盘输入: 032 0x3f 0xa0 17 <CR>
(3)输出结果为:
    hex:i=1a
    dec:j=63    k=160
    oct:l=21

说明:

  • 使用头文件<iostream>时,必须在cin中指明数制,否则从键盘输入时,不认八进制和十六进制数开头的0和0x标志。指明后可省略0和0x标志。

  • 进制控制只适用于整型变量,不适用于实型和字符型变量。

  • 输入数据的格式、个数和类型必须与cin中的变量一一对应,否则不仅使输入数据错误,而且影响后面其他数据的正确输入。

  • 在cin或cout中指明数制后,该数制将一直有效,直到重新指明使用其他数制。



默认状态下,数据按十进制输入输出。如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。
参考代码:
#include <iostream>
using namespace std ;
int main()
{
int i, j, k, l;
cout<<"Input i(oct), j(hex), k(hex), l(dec):"<<endl;
cin>>oct>>i; //输入为八进制数
cin>>hex>>j; //输入为十六进制数
cin>>k; //输入仍为十六进制数
cin>>dec>>l; //输入为十进制数
cout<<"hex:"<<"i="<<hex<<i<<endl;
cout<<"dec:"<<"j="<<dec<<j<<'\t'<<"k="<<k<<endl;
cout<<"oct:"<<"l="<<oct<<l;
cout<<dec<<endl; //恢复十进制输出状态
return 0;
}
【执行结果】:
(1)输出提示:Input i(oct), j(hex), k(hex), l(dec):
(2)此时从键盘输入: 032 0x3f 0xa0 17 <CR>
(3)输出结果为:
hex:i=1a
dec:j=63 k=160
oct:l=21
说明:
使用头文件<iostream>时,必须在cin中指明数制,否则从键盘输入时,不认八进制和十六进制数开头的0和0x标志。指明后可省略0和0x标志。
进制控制只适用于整型变量,不适用于实型和字符型变量。
输入数据的格式、个数和类型必须与cin中的变量一一对应,否则不仅使输入数据错误,而且影响后面其他数据的正确输入。
在cin或cout中指明数制后,该数制将一直有效,直到重新指明使用其他数制。

八进制输出:cout<<oct<<a<<endl;
十六进制输出:cout<<hex<<a<<endl;

这样就可以了
cout<<oct<<a<<endl;
cout<<hex<<a<<endl;
你还可以用他输入,
输入之后转换都可以

  • C语言中的8进制和16进制
    答:实战应用的智慧C语言赋予8进制和16进制在实际编程中的力量。在需要精确比特模式时,8进制让你的代码如诗如画;而在处理位运算、色彩值和内存地址时,16进制则是最精准的尺码。例如,0xFF</常被用于表示一个字节的所有位都被设置为1,而077</则用于显示一个字节的前六位已激活,这是C语言中数字魔法...
  • 用C++编程实现:输入一个十六进制数,然后将这个数以二进制形式输出!
    答:十六进制数用数组装。 比如 abc,想变成二进制数,方法很多。最简单的是定义,十六进制数和二进制数的兑换表,如a = 1010 b = 1011 c = 1100 然后直接代换,就ok了。这个对于大批量数据的转换,速度是相当快的。如果取巧,可以用什么乘除法,你可以去搜下。对后期学习有好处的。
  • C语言如何定义一个16进制数
    答:printf("%d",a);//十进制输出%d是输出一个十进制的数 printf("0x%x",a);//16进制输出printf("%llX\n",a);也可输出一个十六进制数如果红色部分大写X则输出十六进制为大写字母否则小写x输出为小写字母 } 参考:最大数字是15位,没有超过__int64能表达的最大数。__int64最大能表示16位十六进制...
  • 十六进制数在C语言里的表示方法是什么?
    答:八进制:012 040 093 -01151 -0157 04663 -067756 051013 (在C/C++中,八进制开头要加0,来说明这个整数是八进制数)十六进制:0xa 0x20 0x4b -0x269 0x6f 0x9b3 -0x6fee 0x520b(在C/C++中,十六进制开头要加0x,来说明这个整数是十六进制数)...
  • C语言编程:怎么把一个十进制数转换成为一个十六进制数?
    答:char oNumTable[6] = {'A', 'B', 'C', 'D', 'E', 'F'};void dToO(int, char*);int main(){ int dNum;char oNum[100] = {0};//输入一个十进制数 scanf("%d", &dNum);//调用转换函数,将十进制转换成以字符串表示的十六进制 dToO(dNum, oNum);//输出以字符串表示的...
  • C语言里浮点数赋值为十六进制形式怎么做?
    答:由于对于0x40a80000这类16进制写法,编译器都会默认其为整数,所以不能这样去做。故而无法实现你的设想。如果你非要以十六进制形式赋值浮点数,那么只能通过其他途径了。比如说这样写:char cc[4] = {0x00,0x00,0xa8,0x40}; // 因为window为小端模式所以低字节存放在低地址,高字节存放在高地址 ...
  • 用C语言编写一个函数实现十六进制数至十进制数的转换.在主函数中输入十...
    答:void HEX_DEC(int num,int N){ if(num>N-1){ HEX_DEC(num/N,N);} printf("%d",num%N);} void main(){ int num;printf("输入一个十六进制的数\n");scanf("%x",&num);printf("直接用%%d输出:%d\n",num);printf("用函数输出:");HEX_DEC(num,10);//转换成几进制就把第二...
  • ...计算两数之和并分别用十进制和十六进制数形式输出。
    答:include "stdio.h"void main(){ int a,b;printf("请输入2个八进制数:");scanf("%o %o",&a,&b);printf("a+b = %d(十进制)\n",a+b);printf("a+b = %x(十六进制)\n",a+b);}
  • c语言;从键盘输入一个8进制数和一个16进制的数 ,用十进制形式输出他们的...
    答:用scanf进行格式化的输入,用%o来标记八进制数,%x来标记十六进制数,读取到一个足够长的变量就可以了,然后直接相加,然后再输出。include <stdio.h> int main(int argc,char**argv){ int a,b,c;scanf("%o %x",a,b);c=a+b;printf("%d",c);getchar();return ;} ...
  • 用C语言编程将十进制转换为二进制和十六进制
    答:include "stdio.h"include "math.h"include "stdlib.h"rzs(long int *w,long int j);szr(long int *w,long int d);main(){ long int a,b,c,x,y;char e[50];while(1){ do { printf("输入转换的原进制数:");scanf("%ld",&b);fflush(stdin);}while(b!=2&&b!=8&&b!=16&&...