提问:十进制转换成二进制、八进制以及十六进制的代码 就是合在一起,不分开写的那种
网友回答:
你要用什么语言?以下是我用于C++ OJ的一个函数(OJ过多个题目),它可以将一个十进制转化为2~33内任意进制
void m_itoa( char *buf, int i, unsigned char base) { unsigned int rem; unsigned char *s, length = 0; s = ( unsigned char *)buf; if(i == 0) *s++ = '0'; else { if(i < 0) { if(base <= 10) { *buf++ = '-'; s =( unsigned char *) buf; } i = -i; } while(i) { ++length; rem = i % base; if(rem <= 10) *s++ = rem + '0'; else if(base <= 36) *s++ = rem - 10 + 'A'; i /= base; } for(base = 0; base < length / 2; base++) { *(buf + length) = *(buf + base); *(buf + base) = *(buf + (length - base - 1)); *(buf + (length - base - 1)) = *(buf + length); } } *s = 0; }
使用
char s[33]; int n,b; cin >> n >> b; m_itoa(s,n,b); cout << s << endl; return 0;
可以将一个数,转为任何进制
如
m_itoa(s,1234,2); //将1234转为二进制
m_itoa(s,1234,8); //将1234转为八进制
m_itoa(s,1234,16); //将1234转为十六进制