在字符串库函数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. SAEF中的参数是什么意思?
- 3. 在C中的参数列表中是什么意思?
- 4. RegisterClientScriptBlock方法调用中的Type参数的意义是什么?
- 5. 在C中,“void(* parse_arg_function)(const char *)”函数参数是什么意思?
- 6. 参数在c#中的意义(不是参数)
- 7. 什么是“类* CLS”在C++中的函数定义是什么意思?
- 8. C中0长度数组的意义是什么?
- 9. 什么?在C#中是什么意思?
- 10. BASE中的“软状态”是什么意思?
- 11. 什么是C++中的“查询参数”?
- 12. 什么是OpenCV C++中的createBackgroundSubtractorKNN参数?
- 13. 在PHP中,在函数中设置参数的意义是什么?
- 14. 在c/C++中,^ =是什么意思?
- 15. Common Lisp中的“functor中的非法参数”是什么意思?
- 16. “if(x){...}”是什么意思?其中x是C++中的整数?
- 17. matlab中的参数意味着什么?
- 18. C#中的“this”是什么意思?
- 19. c中的(char *)0是什么意思?
- 20. 什么是connection.Dispose()在C#中的意思?
- 21. C++中的* const * a是什么意思
- 22. C++中的“(”<<“)是什么意思?
- 23. C++中的(*)语法是什么意思?
- 24. 什么是(int)在c#中的意思?
- 25. 目标C中的^是什么意思?
- 26. C中的shellcode - 这是什么意思?
- 27. build.gradle中的ldFlags(' - c')是什么意思?
- 28. Objective-C中的“@public”是什么意思?
- 29. '“”''在C#中的“”+ ex'是什么意思?
- 30. C中的“未定义的varName引用”是什么意思?
您是否尝试过使用大量数字?在基数10中20与基数16中的20不同。 – Evert
试试'strtol(“100”,NULL,2)' –
然后你应该停止使用单个数字作为测试用例。 – user3528438