如何在Swift中将字符串转换为UInt32

4
let temp: String = "0xffeeffff"

如何将上述字符串转换为UInt32,因为我需要将其存储在只接受UInt32的位图中。

2
查看此链接 https://dev59.com/9V0a5IYBdhLWcg3wYn12 - Lamour
可能是将字符串转换为Uint32的重复问题。 - ajshort
那么?你应该选择一个答案让人们知道哪个对你有用。 - Devran Cosmo Uenal
2个回答

4

从字符串中删除“0x”以将其转换为UInt32:

let temp   = "0xffeeffff"
let result = UInt32(String(temp.characters.dropFirst(2)), radix: 16)

谢谢您的回复。但是当我将结果传递给bitmapData[offset]时,您必须像“0xffeeffff”一样传递,带有“0x”。 - shixiaoz
@shixiaoz 我已经更新了我的答案。在转换时,“0x”现在已被删除,但temp保持不变。 - Devran Cosmo Uenal
1
@DevranCosmoUenal String("0xffeeffff".characters.suffix(8)) @DevranCosmoUenal 字符串("0xffeeffff".suffix(8)) - Leo Dabus
1
@LeoDabus 我不确定 temp 是否也可能是 0xff,所以我采用了搜索和替换的方式。 - Devran Cosmo Uenal
1
可以在删除它们之前检查是否具有前缀“0x”。 - Leo Dabus
显示剩余2条评论

2

希望这能对你有所帮助...

extension String {
func toUInt() -> UInt? {
    if contains(self, "-") {
        return nil
    }
    return self.withCString { cptr -> UInt? in
        var endPtr : UnsafeMutablePointer<Int8> = nil
        errno = 0
        let result = strtoul(cptr, &endPtr, 10)
        if errno != 0 || endPtr.memory != 0 {
            return nil
        } else {
            return result
        }
    }
}
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接