swift - 在 Swift 3 上使用 NSFileHandle

标签 swift swift3 nsfilehandle

如何在 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 { $0.pointee })
    }
}

FileHandle 读取返回 Data值(value)。 data.withUnsafeBytes使用指向的指针调用闭包 字节,这里是指针的类型 $0从上下文推断 作为UnsafePointer<UInt32> .

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

有关如何从/转换为 Data 的更多示例, 例如看 round trip Swift number types to/from Data .

关于swift - 在 Swift 3 上使用 NSFileHandle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39693139/

相关文章:

ios - Xcode -FirebaseCore 词法或预处理器问题 'GoogleUtilities/GULAppEnvironmentUtil.h' 找不到文件

ios - Post方法请求Alamofire(responseObject)

objective-c - 如何从巨大的文本文件中读取文本 block ?

swift - 如何从终端检测 FileHandle.standardInput 的文件结尾

ios - SwiftUI:如何关闭模式表,然后一起执行导航链接

ios - 如何将包含动态高度内容的弹出 View 居中?

iOS 10 : can't get authorization to use images in MessagesExtensions app

swift - 我需要创建具有命名索引的数组并在其中搜索

iOS:用于大文件下载的 NSFileHandle 与 NSOutputStream

javascript - 小部件 iOS 14 使用 swift ui 创建具有 native react 的 ui