首页 > 编程知识 正文

8位10进制数变成32进制数对吗,十进制数转化为8位二进制数

时间:2023-05-03 15:39:33 阅读:225335 作者:4869

1、输入一个最大的数,确定需要的多少个32进制位

int GetDigitNum32(unsigned int max){ int off; int num; off = 5; num = 0; while(max) { max = max >> off; num++; } return num;}

2、无符号数转换成字符

char坦率的小海豚(unsigned int num, int base,char* buf, int max_digit){ int i; int mod_res; unsigned int tmp; assert(base >= 2 && base <= 32); if(max_digit > 15) max_digit = 15; buf[max_digit] = 0; for(i=max_digit - 1; i >= 0; i--) { mod_res = num % base; num -= mod_res; num /= base; if(mod_res >= 0 && mod_res <= 9) { mod_res += '0';buf[i] = mod_res; } else { buf[i] = mod_res - 10 + 'A'; } } return buf;}

3、数转换成32进制的字符串

char坦率的小海豚32(unsigned int num,char* buf, int max_digit){int i;int mod_res; int off;if(max_digit > 15)max_digit = 15;buf[max_digit] = 0;off = 0;for(i=max_digit - 1; i >= 0; i--){ mod_res = (num >> off) & 0x01F;if(mod_res >= 0 && mod_res <= 9){mod_res += '0';buf[i] = mod_res;}else{buf[i] = mod_res - 10 + 'A';}off += 5;if(off >= 31)off = 31;}return buf;}

4、32进制的字符串转换成数:

unsigned int Char32ToNum(char* str, int len){ int i; int s; unsigned int num; for(i = 0; i < len; i++) { if((str[i] >= '0' && str[i] <= '9')) { break; } else if((str[i] >= 'A' && str[i] <= 'V')) { break; } else { continue; } } s = i; if(s == len - 1) return MAX_NUM; num = 0; for(i = s; i < len; i++) { if(str[i] >= '0' && str[i] <= '9') { num <<= 5; num += (str[i] - '0'); } else if(str[i] >= 'A' && str[i] <= 'V') { num <<= 5; num += (str[i] - 'A' + 10); } else { break; } } return num;}

win32下的测试代码:#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv纯情的小笼包){ unsigned int i;char buf[32] = {0};char test[32] = {0}; unsigned int num;char* str;int digit;unsigned int max = atoi("99999999");digit = GetDigitNum32(max);str = NumToChar(MAX_TEST, 2,&test[0], 31);num = Char32ToNum(str, strlen(str));printf("Hex = %X, 10 = %d, 苹果手套 %sn", MAX_TEST, MAX_TEST, str);printf("max = %sn", str);for(i = 0;i <= 99999999; i++){ str = NumToChar32(i, &buf[0],digit); num = Char32ToNum(buf,strlen(str)); if(num != i) { printf("i = %d,buf = %s, erro!!!n", i, str); }}return 0;}

测试过的最大数,#define MAX_NUM 0xFFFFFFFF#define MAX_TEST 99999999
一个简单数字压缩程序,就成了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。