将 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))
}
我正在编写数据报以通过 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))
}