在字符串庫函數strtol中,有第三個參數叫做'base'。手冊頁說這個基地應該在2到36之間,或者是一個特殊值0.在編寫代碼的時候,這個參數的意義是什麼?當我改變我的代碼中base的值時,我得到了不同的輸出。但是我沒有理解基礎變化和輸出差異背後的邏輯......簡單地說 - 我無法預測我的輸出變化的基數。c中strtol中參數'base'的意義是什麼?
-3
A
回答
0
它是指數字系統,例如,十六進制,八進制,二進制 例如基地如果運行這個小程序
#include<stdio.h>
int main()
{
char str[]="0x16";
char str1[]="0100";
char str2[]="0111";
printf("%d,%d,%d",strtol(str,NULL,16),strtol(str1,NULL,8),strtol(str2,NULL,2));
}
它給輸出爲:22,64,7 十六進制0x16被轉換爲十進制22 0100即100八進制轉換爲十進制64二進制 0111被轉換成7位十進制
+0
你沒有提到'0'作爲基礎 - 這是相當重要的。 –
1
的base
參數指示功能以治療輸入作爲具有特定的數字基。
例如,如果你的字符串包含表示爲十六進制的數字,你可以使用基地16如果是二進制的,你可以使用2 ... 等
非標準基地最多支持基數36,其中位數值爲10至35的「數字」使用字母「a」至「z」。
我們傾向於用作程序員的標準基礎是:2,8,10和16.如果使用base 0的特殊值,那麼函數將以與C編譯器相同的方式檢測數字基解釋的整數值在代碼:
- 二進制(基數爲2)帶有前綴
0b
- 八進制(基數8)的前綴
0
- 十進制(基體10)沒有前綴,但必須以非零數字
- 十六進制(基數爲16)的前綴爲
0x
。
相關問題
- 1. 構造函數定義中的「:base」是什麼意思?
- 2. 什麼是Derived1:Base {};意思?
- 3. `strtol`的實現是什麼?
- 4. 在JNA的Pointer.getPointerArray(long base)和Pointer.getStringArray(long base)中,'base'是什麼意思?
- 5. scipy.stats.zipf中的參數是什麼意思?
- 6. LAPACKE_dgesvd(..)中的參數是什麼意思?
- 7. SAEF中的參數是什麼意思?
- 8. murmurhash3中的參數是什麼意思?
- 9. 在C中的參數列表中是什麼意思?
- 10. stepSimulation中的「step」是什麼意思?Bullet Physics中的參數是什麼意思?
- 11. &C++函數參數列表中的&是什麼意思?
- 12. RegisterClientScriptBlock方法調用中的Type參數的意義是什麼?
- 13. DroneDeploy Tiles API中zoom參數的意義是什麼?
- 14. 在C中,「void(* parse_arg_function)(const char *)」函數參數是什麼意思?
- 15. C中##是什麼意思?
- 16. &&在C++中的參數類型是什麼意思?
- 17. 什麼是「類* CLS」在C++中的函數定義是什麼意思?
- 18. 參數在c#中的意義(不是參數)
- 19. C中0長度數組的意義是什麼?
- 20. 什麼?在C#中是什麼意思?
- 21. BASE中的「軟狀態」是什麼意思?
- 22. 什麼是C++中的「查詢參數」?
- 23. 什麼是OpenCV C++中的createBackgroundSubtractorKNN參數?
- 24. Objective-C方法定義中分號的意義是什麼?
- 25. WL.Client.createChallengeHandler的參數有什麼意義?
- 26. 在PHP中,在函數中設置參數的意義是什麼?
- 27. R中knn函數中的cl參數是什麼意思?
- 28. Base * p = new(buf)Base的含義是什麼?
- 29. xml中的'base'屬性是什麼?
- 30. J2EE中「Java 2」的意義是什麼?
您是否嘗試過使用大量數字?在基數10中20與基數16中的20不同。 – Evert
試試'strtol(「100」,NULL,2)' –
然後你應該停止使用單個數字作爲測試用例。 – user3528438