c++ - strtol 对两个不同的十六进制字符串给出相同的答案

标签 c++ decimal hex 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;

两者都给我相同的值:9223372036854775807

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

最佳答案

您应该从 reading the manual page 开始.它返回 LONG_MAX,因为您输入的内容太大而无法放入 long

此外,strtol() 是一种非常 C 的做事方式,而您正在使用 C++ 进行编程。

关于c++ - strtol 对两个不同的十六进制字符串给出相同的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25971053/

相关文章:

hex - 如何获取每个环境的 Elixir 依赖项?

使用 R 读取和转换二进制原始数据

c++ - 未设置 CONFIG += console 时 qDebug 会花费时间吗?

c# - 如何将十六进制字符串转换为十进制值

python - 如何在python3中获得十进制余数?

c# - 将十进制货币值四舍五入为便士倍数

c++ - 在 win32 中发送十六进制值不能像 C++ 代码那样工作

c++ - 读取 .txt 文件中的多行并输出每行的答案

c++ - 运行 3 个线程时出现段错误

c++ - UDP/TCP 服务器中监听器线程与工作线程的比率?