【问题标题】:Using NSFileHandle on Swift 3在 Swift 3 上使用 NSFileHandle
【发布时间】:2016-09-26 00:24:38
【问题描述】:

如何在 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)
    }
}

【问题讨论】:

    标签: swift swift3 nsfilehandle


    【解决方案1】:
    extension FileHandle {
        func readUInt32() -> UInt32? {
            let data = self.readData(ofLength: 4)
            guard data.count == 4 else { return nil }
            return UInt32(bigEndian: data.withUnsafeBytes { $0.pointee })
        }
    }
    

    FileHandle 读取会返回Data 值。 data.withUnsafeBytes 使用指向 字节,这里指针$0的类型是从上下文中推断出来的 作为UnsafePointer&lt;UInt32&gt;

    UInt32(bigEndian:) 从其大端创建一个整数 表示,作为CFSwapInt32BigToHost() 的替代品。

    有关如何从/到Data 转换的更多示例,请参阅示例 round trip Swift number types to/from Data.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 2017-01-30
      • 1970-01-01
      • 2015-04-21
      • 2017-10-26
      相关资源
      最近更新 更多