C++中十六进制的07,怎么转换成二进制,并且输出时要把前面的几个0也输出,而不是只输出111?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中十六进制的07,怎么转换成二进制,并且输出时要把前面的几个0也输出,而不是只输出111?相关的知识,希望对你有一定的参考价值。

输出要是00000111,而不是111.

参考技术A 0x07是十六进制 先换成十进制为:7,再转换成二进制为:111 前面的0没办法输出的。 参考技术B 输出10进制用printf("%d"),输出16进制用%x,输出二进制没有直接的方法只能自己一位一位判断。

void print2(int x, size_t length)
for (int i = length-1; i >= 0; i--)
if (x & (1 << i))
putchar('1');
else
putchar('0');


参数x是要输出的整数,length是要输出的二进制的长度,如果不足这个长度前面补0来自:求助得到的回答
参考技术B typedef unsigned int uint32;
typedef int int32;
typedef unsigned char uint8;
typedef char int8;
typedef int BOOL;

#define TRUE 1#define FALSE 0
/**********************************************
*函 数 名:PrintBit
*功 能:输出二进制数据
*参 数: number 要转换的数据
is_output_all_bit 是否需要前面带0
*返 回 值:
*备 注:只针对32位,具体情况可以修改里面的buffer的大小
*作 者:
*时 间:2013/25/1
**********************************************/
void PrintBit(uint32 number, BOOL is_output_all_bit)

uint32 num = number;
int8 buffer[33] = 0;//32位
uint8 count = sizeof(buffer) - 1;
memset(buffer,'0',count);
while (num > 0)

buffer[--count] = (num&1) + 48;
num >>= 1;

if (is_output_all_bit)

printf("%s\n",buffer);

else

int8 *p = strchr(buffer,'1');
if (p)

printf("%s\n",p);

else

//当 number==0 时
printf("%d\n",number);


以上是关于C++中十六进制的07,怎么转换成二进制,并且输出时要把前面的几个0也输出,而不是只输出111?的主要内容,如果未能解决你的问题,请参考以下文章

在C语言中怎么把一个数转换成二进制然后输出

C++编写一个程序,将用户输入的十进制整数转换成任意进制的数

C++ builder中如何把unsigned char类型转换成16进制的输出

c语言中如何将十六进制转换成2个字节输出

进制转换,请将一个n进制的数转换成m进制的数,并输出.

c++中如何将十进制数字换为ASLL码中的字母