将 Int 附加到 Swift 中的数据 3

Append Int to Data in Swift 3

我正在编写数据报以通过 UDP 套接字将其发送到服务器。如何将 Int 附加到数据报的末尾(已经组成 Data)?

您可以使用

public mutating func append<SourceType>(_ buffer: UnsafeBufferPointer<SourceType>)

Data 的方法。您可能还想转换值 之间通信时的网络(大端)字节顺序 不同的平台,并使用固定大小的类型,如 (U)Int16(U)Int32,或(U)Int64

示例:

var data = Data()

let value: Int32 = 0x12345678
var beValue = value.bigEndian
data.append(UnsafeBufferPointer(start: &beValue, count: 1))

print(data as NSData) // <12345678>

Swift 4/5 更新:

let value: Int32 = 0x12345678
withUnsafeBytes(of: value.bigEndian) { data.append(contentsOf: [=12=]) }

不再需要中间变量

更好的方法:

var data = Data()
     
let value: Int32 = 0x12345678
var bigEndianVal = value.bigEndian

withUnsafePointer(to: &bigEndianVal) {
    data.append(UnsafeBufferPointer(start: [=10=], count: 1))
}