strtol为两个不同的十六进制字符串给出相同的答案

0 c++ hex decimal strtol

所以我有两个十六进制字符串 - "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;
Run Code Online (Sandbox Code Playgroud)

两者都给了我相同的价值:9223372036854775807.

我不知道strtol()是如何工作的,因为我是C++的新手,但它给了我两个不同的十六进制字符串相同的值.为什么?

unw*_*ind 5

您应该首先阅读手册页.它正在返回,LONG_MAX因为你的输入太大而不适合long.

此外,这strtol()是一种非常C的做事方式,而且你是用C++编程的.