函式及其引數
long int strtol(const char *nptr,char **endptr,int base);
編輯本段
函式的解釋說明
這個函式會將引數nptr字串根據引數base來轉換成長整型數。引數base範圍從2至36,或0。參
數base代表採的進製方式,如base值為10則採用10進製,若base值為16則採用16進製制等。當base值為
0時則是採用10進製做轉換,但遇到如』0x』前置字元則會使用16進製做轉換、遇到』0』前置字元而
不是』0x』的時候會使用8進製做轉換。一開始strtol()會掃瞄引數nptr字串,跳過前面的空格字
符,直到遇上數字或正負符號才開始做轉換,再遇到非數字或字串結束時('\0')結束轉換,並將結
果返回。若引數endptr不為null,則會將遇到不合條件而終止的nptr中的字元指標由endptr返回;若
引數endptr為null,則會不返回非法字串。
編輯本段
strtol是atoi的增強版
主要體現在這幾方面:
1.不僅可以識別十進位制整數,還可以識別其它進製的整數,取決於base引數,比如strtol
("0xdeadbee~~", null, 16)返回0xdeadbee的值,strtol("0777~~", null, 8)返回0777的值。
2.endptr是乙個傳出引數,函式返回時指向後面未被識別的第乙個字元。例如char *pos;
strtol("123abc", &pos, 10);,strtol返回123,pos指向字串中的字母a。如果字串開頭沒有可
識別的整數,例如char *pos; strtol("abcabc", &pos, 10);,則strtol返回0,pos指向字串開頭
,可以據此判斷這種出錯的情況,而這是atoi處理不了的。
3.如果字串中的整數值超出long int的表示範圍(上溢或下溢),則strtol返回它所能表示的
最大(或最小)整數,並設定errno為erange,例如strtol("0xdeadbeef~~", null, 16)返回
0x7fffffff並設定errno為erange
//進製轉換a到b,注意需要全用字串
void fun(int a,int b,int temp)
//倒置存放,共i位
for(j=0;jtemp[j]=temp[i-j-1];
}int fun(int num,int a)//轉為十進位制
數制及進製轉換
數制 也稱為 計數制 是用一組固定的符號和統一的規則來表示數值的方法。任何乙個數制都包含兩個基本要素 基數和位權。基本概念 數碼 數制中表示基本數值大小的不同數字符號。例如 十進位制中有10個數碼 0 1 2 3 4 5 6 7 8 9 基數 數制中所使用數碼的個數。例如 十進位制使用的數碼個數為 ...
shell 數制轉換
shell 指令碼預設數值是由10 進製數處理,除非這個數字某種特殊的標記法或字首開頭.才可以表示其它進製型別數值。如 以 0 開頭就是 8 進製.以0x 開頭就是16 進製數.使用 base number 這種形式可以表示其它進製.base值 2 64.使用方法 八進位制轉十進位制 charles...
數制的轉換
鏈棧實現數制的轉換 include using namespace std define ok 1 define error 0 define overflow 2 typedef int status define e 8 typedef struct snodesnode,linkstack s...