|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
关于进制转换,怎么把16进制和10进制转换成2进制并打印输出
求解......有代码最好...
本帖最后由 jackz007 于 2021-1-19 02:21 编辑
2 ~ 16 进制间任意转换
- #include <stdio.h>
- // 把整型数 d 转换为 x(2~16) 进制字符串 s
- char * tox(char s[] , int * k , long long d , int x)
- {
- char b[] = "0123456789abcdef" ;
- * k = 0 ;
- s[0] = '\0' ;
- if(x <= 16) {
- if(d) {
- tox(s , k , d / x , x) ;
- s[(* k) ++] = b[d % x] ;
- s[* k] = '\0' ;
- }
- }
- return s ;
- }
- // 把 x(2~16)进制字符串 s 转换为整型数
- long long fromx(char s[] , int x)
- {
- char b[] = "0123456789abcdef" ;
- long long d = -1 , i , j ;
- if(x <= 16 ) {
- for(d = i = 0 ; s[i] ; i ++) {
- for(j = 0 ; j < x ; j ++) if(s[i] == b[j]) break ;
- if(j < x) {
- d = d * x + j ;
- } else {
- d = -1 ;
- break ;
- }
- }
- }
- return d ;
- }
- int main(void)
- {
- char s[64] ;
- long long d ;
- int k , x ;
- printf("请输入一个整数和目标进制数(2 - 16) : ") ;
- scanf("%I64d%d" , & d , & x) ;
- printf("%s\n" , tox(s , & k , d , x)) ;
- printf("%I64d\n" , fromx(s , x)) ;
- }
复制代码
|
|