Как преобразовать строку в UInt32 в Swift

let temp: String = "0xffeeffff"

Как преобразовать вышеуказанную строку в UInt32, потому что мне нужно сохранить ее в растровом изображении, которое принимает только UInt32


person shixiaoz    schedule 04.01.2016    source источник
comment
проверьте эту ссылку stackoverflow.com /вопросы/30382414/   -  person Lamour    schedule 04.01.2016
comment
Возможный дубликат преобразовать строку в Uint32   -  person ajshort    schedule 04.01.2016
comment
так? вы должны выбрать ответ, чтобы люди знали, что сработало для вас.   -  person Devran Cosmo Uenal    schedule 21.01.2016


Ответы (2)


Удалите «0x» из вашей строки, чтобы преобразовать ее в UInt32:

let temp   = "0xffeeffff"
let result = UInt32(String(temp.characters.dropFirst(2)), radix: 16)
person Devran Cosmo Uenal    schedule 04.01.2016
comment
спасибо за ваш ответ. Но когда я передаю результат в bitmapData[offset], вы должны передать как 0xffeeffff с 0x - person shixiaoz; 04.01.2016
comment
@shixiaoz я обновил свой ответ. 0x теперь удаляется при преобразовании, но оставляет temp как есть. - person Devran Cosmo Uenal; 04.01.2016
comment
@DevranCosmoUenal Строка (0xffeeffff.characters.suffix (8)) - person Leo Dabus; 04.01.2016
comment
@LeoDabus Я не был уверен, может ли temp также быть 0xff, поэтому я выбрал способ поиска и замены. - person Devran Cosmo Uenal; 04.01.2016
comment
@LeoDabus String("0xff".characters.suffix(8)) результаты 0xff. String(temp.characters.dropFirst(2)) будет работать. - person Devran Cosmo Uenal; 04.01.2016
comment
но он должен начинаться с 0x - person Leo Dabus; 04.01.2016
comment
также может проверить, есть ли у него префикс (0x), прежде чем их отбрасывать - person Leo Dabus; 04.01.2016

надеюсь, это поможет вам...

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
        }
    }
}
}
person Akash Raghani    schedule 04.01.2016