gpt4 book ai didi

c - 为什么 sscanf() 或 strtoll() 不将超过 9 个字节的十六进制字符串转换为十六进制数

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:43 25 4
gpt4 key购买 nike

例如。我有一个十六进制字符串“1800272100A1”。我试着把它转换成十六进制号。 1800272100A1 使用 ssanf() 如下,

   sscanf(out1,"%lld",&r1);

其中 out1 包含上述字符串,r1 是 long long int。

甚至 strtoll() 也无法转换相同的字符串,

  r1 = strtoll(out1,NULL,16);

最佳答案

您正在使用 %lld 格式说明符。对于 %lld,只有 0-9 是有效数字。使用 %llx 正确转换它。 %llxlong long int 整数的十六进制 表示形式的格式说明符。

在您输入的 1800272100A1 中,'A'%lld 的第一个无效数字。所以它一直转换到 'A' 之前。

我不确定为什么 strtoll 会失败。我阅读了它的文档,您的语法似乎没问题。

关于c - 为什么 sscanf() 或 strtoll() 不将超过 9 个字节的十六进制字符串转换为十六进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23362379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com