在 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 的更多示例,请参见示例 .