gpt4 book ai didi

swift - 如何修复整数文字 '2147483648' 存储到 'Int' 异常时溢出?

转载 作者:行者123 更新时间:2023-11-28 07:50:29 24 4
gpt4 key购买 nike

let stringData = "84121516"  // this is 4 bytes data
let value = self.checkHexToInt(stringData: stringData)
func checkHexToInt(stringData: String) -> Int? {
guard let num = Int(stringData, radix: 16) else {
return nil
}
return Int(num)
}


// values is 2215777558 But I need most significant bit only

let checkEngineLightOn = ((value! & 0x80000000) > 0);

当我这样做时,我得到了一个异常,说“整数文字'2147483648'在存储到'Int'时溢出”

当我这样做时,我希望得到 true 或 false。或者还有其他方法可以从 Int Value 中获取最高有效位吗?

最佳答案

正如@OOPer 在评论中指出的那样,在 32 位系统上,Int 是 32 位的,您的值大于 Int32.max。由于您正在解码 4 个字节,因此您可以使用 UInt32:

func checkHexToUInt32(stringData: String) -> UInt32? {
return UInt32(stringData, radix: 16)
}

let stringData = "84121516" // this is 4 bytes data
let value = self.checkHexToUInt32(stringData: stringData)
let checkEngineLightOn = ((value! & 0x80000000) > 0)

注意:UInt32(_:radix:) 返回一个UInt32? 如果转换失败则为nil,所以没有原因对于guardreturn nil,只返回转换后的值。

关于swift - 如何修复整数文字 '2147483648' 存储到 'Int' 异常时溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49826381/

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