自己實現itoa ,10進製到2 36進製的轉換

2021-09-25 22:35:56 字數 1233 閱讀 7208

先看下itoa()的函式說明:

功能:把一整數轉換為字串

用法:char *itoa(int value, char *string, int radix);

詳細解釋:itoa是integer to array(將int整型轉化為乙個字串,並將值儲存在陣列string中)的縮寫。

引數:value :待轉化的整數。

radix:是基數的意思,即將value轉化為radix進製的數,範圍介於2-36,比如10表示10進製,16表示16進製制。

*string:儲存轉換後得到的字串。

返回值:char *:指向生成的字串,同*string。

備註:該函式的標頭檔案是「stdlib.h」(包含在iostream裡面)

是windows平台下擴充套件的,標準庫中有sprintf,功能比這個更強,用法跟printf類似。

1

//n是要被轉換的十進位制數,bit是要被轉換的進製數

2 #include 3 #include

4using

namespace

std; 56

char * ten_to_other(int num,char* str, int

radix) 717

if(num<0)18

23while(num) //

不能處理num=0的情況24

28 *ptr='

\0';//

此時ptr已經指向字串結尾,而str仍舊指向字串開始。

29 ptr--;//

讓ptr指向字串內容!!

30char *start=(negtive)? str+1:str;//

注意此處不能寫str++,否則,str不指向儲存值的首位址了

31while(start3242

/*int len=strlen(str);

43int i = (negtive)? 1:0;

44for(i; i45 */

50return

null;

51}

52int

main()

53;

55 ten_to_other(-82,a,6

); 56 cout57 system("

pause

");

58return0;

59 }

C 實現10進製轉2進製

這幾天在複習計算機原理,看到二進位制忽然想到二進位制轉10進製的公式,然後轉念一想10進製轉二進位制的公式好像沒印象,那索性自己寫出來。結果學渣的我發現,並不能寫出來!什麼數列,對數,xx函式忘得一乾二淨,而且需要有需要判斷的地方,於是崩潰了,以前代數題並沒寫過條件啊 索性用c 搞出來 雖然在c 裡...

SQL實現16進製製到10進製的轉換

sql 實現對 16進製制 到10進製的轉換 create function dbo.f hex dec s varchar 16 returns bigint asbegin declare i int result bigint select i 0 result 0,s rtrim ltrim...

linux 下實現 itoa 轉二進位制

linux下,需要將整數轉化為二進位制,很自然想到itoa,發現這函式竟然編譯不通過。標準庫中貌似有這個實現,不明白了 網上參考了帖子,下面實現 感覺這方法有點費腦,不是很直觀。取模的方法一般都是從低位到高位,所以儲存的字串結果一般會跟需要的結果相反,需要倒轉,要解決這個問題,可以從字串陣列後面開始...