|
 vc代碼
注意:在linux下是沒有 ltoa這個函數(shù),因此在linux下可用這樣來實現(xiàn):
用sprintf格式化字符串,%x(16進制),%o(8進制),%u(無符號十進制); 字符串轉(zhuǎn)數(shù)字可用strtol來實現(xiàn),這個函數(shù)第三個形參 代表采用的進制方式,如base值為10則采用10進制;
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <locale.h> 5 int main() { 6 int i,v; 7 char bs[33]; 8 char b[33]; 9 char hs[9]; 10 char h[9]; 11 char s[4]; 12 char *e; 13 14 // 十進制整數(shù)轉(zhuǎn)二進制串; 15 i=1024; 16 ltoa(i,b,2); 17 sprintf(bs,"%032s",b); 18 printf("i=%d,bs=%s\n",i,bs); 19 // 十進制整數(shù)轉(zhuǎn)十六進制串; 20 i=1024; 21 ltoa(i,h,16); 22 sprintf(hs,"%08s",h); 23 printf("i=%d,hs=%s\n",i,hs); 24 // 十六進制字符串轉(zhuǎn)成十進制數(shù) 25 strcpy(hs,"00000400"); 26 sscanf(hs,"%x",&i); 27 printf("hs=%s,i=%d\n",hs,i); 28 // 二進制字符串轉(zhuǎn)化為十六進制字符串; 29 strcpy(bs,"00000000000000000000010000000000"); 30 i=strtol(bs,&e,2); 31 ltoa(i,h,16); 32 sprintf(hs,"%08s",h); 33 printf("bs=%s,hs=%s\n",bs,hs); 34 // 二進制字符串轉(zhuǎn)化為十進制數(shù); 35 strcpy(bs,"00000000000000000000010000000000"); 36 i=strtol(bs,&e,2); 37 printf("bs=%s,i=%d\n",bs,i); 38 // 十六進制字符串轉(zhuǎn)成二進制串 39 strcpy(hs,"00000400"); 40 sscanf(hs,"%x",&i); 41 ltoa(i,b,2); 42 sprintf(bs,"%032s",b); 43 printf("hs=%s,bs=%s\n",hs,bs); 44 // ASC\GBK字符串轉(zhuǎn)十六進制串 45 strcpy(s,"a漢"); 46 i=0; 47 while (1) { 48 if (0==s[i]) break; 49 sprintf(hs+i*2,"%02X",(unsigned char)s[i]); 50 i++; 51 } 52 setlocale(LC_ALL,"chs"); 53 printf("s=%s,hs=%s\n",s,hs); 54 // 十六進制字符串轉(zhuǎn)成漢字(GBK)及字符(ASC) 55 strcpy(hs,"61BABA"); 56 i=0; 57 while (1) { 58 if (1!=sscanf(hs+i*2,"%2x",&v)) break; 59 s[i]=(char)v; 60 i++; 61 } 62 s[i]=0; 63 printf("hs=%s,s=%s\n",hs,s); 64 65 return 0; 66 67
|