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++编写一个程序,将用户输入的十进制整数转换成任意进制的数