将uint32值拆分为swift中的uint8值

Dim*_*rio 2 type-conversion uint8t swift

在CI有

uint32 value = 39434;
uint8 firstByte = (unsigned char)value;
uint8 secondByte = (unsigned char)(value >> 8);
Run Code Online (Sandbox Code Playgroud)

有没有可能在Swift中实现同样的目标?

Mar*_*n R 5

它在Swift中非常相似:

let value : UInt32 = 39434
let firstByte = UInt8(truncatingBitPattern: value) // 10
let secondByte = UInt8(truncatingBitPattern: value >> 8) // 154
Run Code Online (Sandbox Code Playgroud)

init(truncatingBitPattern:) 这里需要特殊的初始值设定项,因为Swift(与C相反)不会隐式截断整数:

let firstByte = UInt8(value)
Run Code Online (Sandbox Code Playgroud)

如果value不适合范围,将导致运行时异常 UInt8.

另请参阅将UInt32拆分为swift中的[UInt8]以 获取可能的解决方案,该解决方案为您提供了包含输入值的四个字节的数组.