在 Swift 上使用 NSFileHandle 3
Using NSFileHandle on Swift 3
如何在Swift 3 中编写此方法?
extension NSFileHandle {
func readUInt32() -> UInt32? {
let data = self.readDataOfLength(4)
guard data.length == 4 else { return nil }
return CFSwapInt32HostToBig(UnsafePointer<UInt32>(data.bytes).memory)
}
}
extension FileHandle {
func readUInt32() -> UInt32? {
let data = self.readData(ofLength: 4)
guard data.count == 4 else { return nil }
return UInt32(bigEndian: data.withUnsafeBytes { [=10=].pointee })
}
}
从 FileHandle
returns 读取 Data
值。
data.withUnsafeBytes
使用指向的指针调用闭包
字节,这里指针的类型 [=14=]
是从上下文中推断出来的
作为 UnsafePointer<UInt32>
。
UInt32(bigEndian:)
从其大端创建一个整数
表示,作为 CFSwapInt32BigToHost()
.
的替代
有关如何转换 from/to Data
的更多示例,请参见示例
.
如何在Swift 3 中编写此方法?
extension NSFileHandle {
func readUInt32() -> UInt32? {
let data = self.readDataOfLength(4)
guard data.length == 4 else { return nil }
return CFSwapInt32HostToBig(UnsafePointer<UInt32>(data.bytes).memory)
}
}
extension FileHandle {
func readUInt32() -> UInt32? {
let data = self.readData(ofLength: 4)
guard data.count == 4 else { return nil }
return UInt32(bigEndian: data.withUnsafeBytes { [=10=].pointee })
}
}
从 FileHandle
returns 读取 Data
值。
data.withUnsafeBytes
使用指向的指针调用闭包
字节,这里指针的类型 [=14=]
是从上下文中推断出来的
作为 UnsafePointer<UInt32>
。
UInt32(bigEndian:)
从其大端创建一个整数
表示,作为 CFSwapInt32BigToHost()
.
有关如何转换 from/to Data
的更多示例,请参见示例