您的位置:首页 > 编程语言 > PHP开发

位操作:十进制数转为二进制,八进制,十六进制

2012-04-25 16:59 295 查看
#include <stdio.h>
#include <iostream>

#define MAP_LEN 16

#define HEX_SHIFT 4
#define HEX_LEN ( (int)(32/HEX_SHIFT) + 1 )

#define OCT_SHIFT 3
#define OCT_LEN ( (int)(32/OCT_SHIFT) + 1 )

#define BIN_SHIFT 1
#define BIN_LEN ( (int)(32/BIN_SHIFT) + 1 )

static char mapTable[MAP_LEN] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F' };

void int2other( int number, int size, int mask, int shift ) // size 为字符位数,mask 为低位掩码,shift 为右移位数
{
char* result = new char[size];
int i = 0;
int idx;
while ( number )
{
idx = number & mask; // 每次取低几位
result[ i ] = mapTable[ idx ];
number = number >> shift; // 右移
++i;
}

for ( --i; i >= 0; i-- ) // 逆序输出字符即可
{
printf( "%c", result[i] );
}

printf("\n");

delete[] result;
}

void int2hex( int number )
{
int2other( number, HEX_LEN, 0xF, HEX_SHIFT );
}

void int2oct( int number)
{
int2other( number, OCT_LEN, 0x7, OCT_SHIFT );
}

void int2bin( int number)
{
int2other( number, BIN_LEN, 0x1, BIN_SHIFT );
}

int main()
{
int num = 123456789;
printf( "%d's hex is: ", num );
int2hex(num);

printf( "%d's oct is: ", num );
int2oct(num);

printf( "%d's bin is: ", num );
int2bin(num);

return 0;
}





// main output













                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hex include delete output c
相关文章推荐