gpt4 book ai didi

swift - 十六进制字符串到十进制不起作用 - 有些东西不正确 : swift

转载 作者:行者123 更新时间:2023-11-28 13:13:46 25 4
gpt4 key购买 nike

我有一小段代码如下所示:

var str = "42042753 08b14f00 1852003f 8a86"
var bre = str.substringWithRange(Range<String.Index>(start: advance(str.startIndex, 0), end: advance(str.endIndex, -29)))
if bre == "42" {
var batt = str.substringWithRange(Range<String.Index>(start: advance(str.startIndex, 2), end: advance(str.endIndex, -25)))
println("\(batt)")
let value = UInt8(strtoul(batt, nil, 16))
println("\(value)")
}

我想做的就是检查前两个字符是否为“42”,如果是,则将接下来的四个字符(即“0427”)转换为十进制“值”,但它不起作用。我测试了 let value = UInt8(strtoul("ff", nil, 16)) 并且它可以正常工作并打印“255”。那么为什么不转换“0427”的“batt”呢?我的代码有什么问题?

最佳答案

有问题 UInt8 最大数是 1024。0427 = 1063 > 1024。所以它不起作用。更改为:

  let value = Int(strtoul(batt, nil, 16))

关于swift - 十六进制字符串到十进制不起作用 - 有些东西不正确 : swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30159262/

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