所以我有两个十六进制字符串 - "3b101c091d53320c000910"
和 "071d154502010a04000419"
。当我对它们使用 strtol()
时,我得到两个字符串的相同值。
我尝试了以下代码-
string t1="3b101c091d53320c000910";
long int hext1=strtol(t1.c_str(),0,16);
string t2="071d154502010a04000419";
long int hext2=strtol(t2.c_str(),0,16);
cout<<hext1<<endl;
cout<<hext2<<endl;
两者都给我相同的值:9223372036854775807
。
我不知道 strtol() 是如何工作的,因为我是 C++ 的新手,但它为两个不同的十六进制字符串提供了相同的值。为什么?
最佳答案
您应该从 reading the manual page 开始.它返回 LONG_MAX
,因为您输入的内容太大而无法放入 long
。
此外,strtol()
是一种非常 C 的做事方式,而您正在使用 C++ 进行编程。
关于c++ - strtol 对两个不同的十六进制字符串给出相同的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25971053/