Swift将有符号的Int 数组转换为Int 的无符号数组

如何将有符号数组[Int8]转换为[UInt8]的无符号数组。

let arryData: [Int8] = [-108, 11, -107, -14, 35, -57, -116, 118, 54, 91, 12, 67, 21, 29, -44, 111] 

我只是想把这个转换成无符号[UInt8]数组。 如何快速实现这一目标? 提前致谢。

如果您的意图是将带符号的8位整数转换为具有相同位表示的无符号整数(例如-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]

您尚未指定如何处理负值。 把它们翻转成正面的对应物,或者把它们去掉。 下面是两种情况。


通过翻转符号将负值转化为正值:

 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] */ 

或者,通过消除负值:

 let arrayDataUnsigned = arrayData.flatMap { $0 < 0 ? nil : UInt8($0) } /* [11, 35, 118, 54, 91, 12, 67, 21, 29, 111] */ 
Interesting Posts