Comment convertir un tableau signé de [Int8] en un tableau non signé de [UInt8].
let arryData: [Int8] = [-108, 11, -107, -14, 35, -57, -116, 118, 54, 91, 12, 67, 21, 29, -44, 111]
Je veux juste convertir ceci ci-dessus en tableau de Unsigned [UInt8]. Comment y parvenir rapidement? Merci d'avance.
Si vous avez l'intention de convertir des entiers 8 bits signés en entiers non signés avec la même représentation binary (par exemple -1 -> 255
):
let intArray: [Int8] = [0, 1, 2, 127, -1, -2, -128] let uintArray = intArray.map { UInt8(bitPattern: $0) } print(uintArray) // [0, 1, 2, 127, 255, 254, 128]
[Int8] -> [UInt8]
Vous n'avez pas spécifié comment vous voulez traiter les valeurs négatives; en les returnnant à leur contrepartie positive ou en les retirant. Ci-dessous suit les deux cas.
Transformer les valeurs négatives en valeurs positives en inversant le signe:
let arrayData: [Int8] = [-108, 11, -107, -14, 35, -57, -116, 118, 54, 91, 12, 67, 21, 29, -44, 111] let arrayDataUnsigned = arrayData.map { UInt8(abs($0)) } /* [108, 11, 107, 14, 35, 57, 116, 118, 54, 91, 12, 67, 21, 29, 44, 111] */
Ou, en supprimant les valeurs négatives:
let arrayDataUnsigned = arrayData.flatMap { $0 < 0 ? nil : UInt8($0) } /* [11, 35, 118, 54, 91, 12, 67, 21, 29, 111] */