如何将文件读入整数数组

2024-01-29

在我的应用程序文档文件夹中,我有一个文件,我试图将其逐字节读入数组UInt8其中每个元素代表一个字节。我该怎么做呢?该文件恰好名为 Q1.dat。

这是我不成功的尝试:

func readArray() -> [Int]? {
    if let arrayPath: String = createArrayPath() {
        if let arrayFromFile: [Int] = NSArray(contentsOfFile: arrayPath) as? [Int] {
            return arrayFromFile
        }
    }
    return nil
}

func createArrayPath () -> String? {
    if let docsPath: String = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last {
        return ((docsPath as NSString).stringByAppendingPathComponent("Q1") as NSString).stringByAppendingPathExtension("dat")
    }
    return nil
}

尝试这样的事情:

let filePath = "/Path/To/Directory/Q1.dat"

var bytes = [UInt8]()

if let data = NSData(contentsOfFile: filePath) {

    var buffer = [UInt8](count: data.length, repeatedValue: 0)
    data.getBytes(&buffer, length: data.length)
    bytes = buffer
}

抱歉,我不在可以测试它的地方,但是稍微修改一下它应该会给你一系列UInt8s,每个代表文件中的一个字节。

编辑:如果你真的希望这是一个数组Ints 而不是UInt8s, just map bytes到一个数组Ints:

let intBytes = bytes.map { Int($0) }

...尽管一般来说,不清楚为什么要使用字节集合以外的任何内容,字节集合最适合表示为一系列UInt8s.

如果你真的真的想要这些 1 和 0,那么将其添加到最后应该可以做到:

var onesAndZeros = [UInt8]()

bytes.forEach { byte in

    var array = [UInt8](count: 8, repeatedValue: 0)

    let bits = String(byte, radix: 2).characters.flatMap { UInt8(String($0)) }

    array.replaceRange((8-bits.count)..<8, with: bits)
    onesAndZeros.appendContentsOf(array)
}

再一次,我和UInt8代替Int,只是因为它更有意义,但可以根据需要进行更改。

为了使事情变得简单,您可以将这两个操作包装在几个函数中,如下所示:

func bytesFromFile(filePath: String) -> [UInt8]? {

    guard let data = NSData(contentsOfFile: filePath) else { return nil }

    var buffer = [UInt8](count: data.length, repeatedValue: 0)
    data.getBytes(&buffer, length: data.length)

    return buffer
}

func bitsFromBytes(bytes: [UInt8]) -> [UInt8] {

    var onesAndZeros = [UInt8]()

    bytes.forEach { byte in

        var array = [UInt8](count: 8, repeatedValue: 0)

        let bits = String(byte, radix: 2).characters.flatMap { UInt8(String($0)) }

        array.replaceRange((8-bits.count)..<8, with: bits)
        onesAndZeros.appendContentsOf(array)
    }

    return onesAndZeros
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将文件读入整数数组 的相关文章

  • iOS 13 检查 CLLocationManager 的临时授权状态

    根据 WWDC 视频 https developer apple com videos play wwdc2019 705 https developer apple com videos play wwdc2019 705 当你要求 Al
  • 保存来自 TrueDepth 相机的深度图像

    我正在尝试保存 iPhone X TrueDepth 相机的深度图像 使用AVCam照片滤镜 https developer apple com library content samplecode AVCamPhotoFilter Lis
  • Angular 4 显示其中的数据

    我不喜欢从 API 返回到我的 Angular 4 应用程序的数据 这是 JSON 的示例 我不关心美元 但这是我正在处理的数据类型 最终目标是在页面上展示 Coin Price BTC 4 281 28 ETH 294 62 etc JS
  • 二元运算符“/”不能应用于两个(Int)操作数[重复]

    这个问题在这里已经有答案了 我得到了Binary operator cannot be applied to two Int operands当我将以下代码放入 Xcode 中的 Swift Playground 时出错 func sumO
  • 在 UITableViewController 中重新排序行后 UI 更新不正确

    因此 我对表中的行重新排序 用户界面最终结果不正确 场景如下 表内容原文 a b c d e 如果我移动第 0 行 当前a 到第 4 行 当前e 我看到的最终结果是 c d e a a 一些背景 该表正在读取 Realm 对象的列表 我确认
  • XCode 7 中的 AWSS3TransferManagerUploadRequest

    我今天升级到 Xcode 7 Swift 2 0 我的项目正在使用 CocoaPods 我正在 POD 文件中导入所有与 AWS 相关的文件 我已经设置了桥接标头 并导入了 Amazon 告诉我的所有文件 在升级到 Swift 2 0 之前
  • iOS Swift 和 reloadRowsAtIndexPaths 编译错误

    我与 xCode Swift 陷入僵局并刷新 UITableView 的单行 这条线有效 self tableView reloadData 而这条线没有 self tableView reloadRowsAtIndexPaths curr
  • 检查 Swift 中关联类型是否符合协议

    在类似情况下 如何检查对象是否符合 可表示 协议 protocol Representable associatedtype RepresentType var representType RepresentType get set cla
  • 如何在 Swift 中使用未知密钥解码 JSON 响应?

    我想将数据拆分为https blockchain info ticker https blockchain info ticker这样每一行都是它自己的String在一个数组中 我正在制作一个获取所选货币价格的应用程序 因此 如果有人想要澳
  • 将 int 复制到 byte[] 的最简单方法

    我有一个 byte 我正在迭代 int 列表 和其他数据 我想将 int 复制到我的 byteArray index 4 我该怎么做 BitConverter http msdn microsoft com en us library sy
  • UITableView 快速获取 titleForHeadersInSection

    我想在 UITableView 的部分中设置标题的标题 语法是什么swift设置该部分中标题的标题 func tableView tableView UITableView titleForHeaderInSection section I
  • 如何初始化一个最初大小未知的数组?

    假设我有这个 int x int x State Determined By Program const char pArray const int x 在使用 pArray 之前如何初始化它 因为Array的初始大小是由用户输入决定的 T
  • 如何向 UIView 添加大小调整手柄?

    我试图根据用户请求在运行时动态创建视图 UIImageView 和 UITextView 然后允许用户移动它们并调整它们的大小 除了调整大小之外 我的一切都工作得很好 我尝试使用捏合手势识别器 但发现它对于我想要的东西来说太笨拙了 因此 我
  • 调用 SwiftUI 中位置 #11、#12 处的额外参数 [重复]

    这个问题在这里已经有答案了 我在 SwiftUI 中的切换开关上不断收到 调用中位置 11 12 处有额外参数 错误 我见过其他人有 调用中的额外参数 错误 但答案似乎没有帮助 另外 我的错误是 位置 11 12 我还没有看到其他人发生这种
  • 以编程方式从底部裁剪图像

    我正在开发自定义相机应用程序 一切进展顺利 但我在从底部裁剪图像时遇到了问题 即 裁剪后的图像与原始图像具有完全相同的宽度 但高度将为原始图像的 1 3 并且必须从底部开始 斯威夫特3解决方案 func cropBottomImage im
  • 在 swift 中将简单字符串转换为 JSON 字符串

    我知道有一个同标题的问题here https stackoverflow com questions 30825755 convert string to json string in swift 但在那个问题中 他试图将字典转换为 JSO
  • 搜索深度嵌套数组以更新对象

    我有一个深层嵌套的数据结构 我有兴趣匹配数组 和数组数组 中的某个值 然后将一些数据推送到随附的数组中 例如以下是我的数组colors并伴随着的是更多颜色数组可能存在也可能不存在 var myData color green moreCol
  • 将 numpy 代码点数组与字符串相互转换

    我有一个很长的 unicode 字符串 alphabet range 0x0FFF mystr join chr random choice alphabet for in range 100 mystr re sub W mystr 我想
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组
  • iOS 电池监控 Swift

    我已将监控设置为启用 但模拟器和设备中的电池电量仍然为 1 UIDevice currentDevice batteryMonitoringEnabled true var level UIDevice currentDevice batt

随机推荐

  • MPI - 异步广播/收集

    我有一个项目 需要 n 个进程才能工作 直到问题得到解决 每个从属进程执行相同的代码 当某种情况出现时 该进程需要以非阻塞的方式通知所有其他进程 其他进程也需要以非阻塞的方式接收这个消息 有没有办法不用线程单独的循环 我已经有一段时间没有使
  • 如何在 Drools 中参数化后时间约束?

    我有一个与以下示例非常相似的规则 rule correlate orders when bo BuyOrderEvent id id ae AckEvent id id this after 0 10s bo then do somethi
  • 为什么 PHP Composer 这么慢?

    Why is PHP 作曲家 https en wikipedia org wiki Composer software 当我所做的只是初始化一个零依赖项的项目时 速度这么慢 以下是我运行的命令 composer init composer
  • 为什么闭包比全局变量更能保存变量?

    我了解闭包在 JavaScript 中的工作原理 但我的问题是为什么要费尽心思创建闭包来保存变量 不能把变量设为全局吗 或者这会扰乱全局范围并使您的代码容易出错 这是一个范围界定问题 全局变量就是这样 Global toeveryone 使
  • 我应该如何安装keras-bert才能在R端正确使用?

    我正在尝试按照解释安装 keras berthere https blogs rstudio com ai posts 2019 09 30 bert r 虽然它已成功安装在环境 as 上 但我在 R 端看不到 keras bert ber
  • Kafka 事务失败但仍提交偏移量

    我正在尝试了解 Kafka 事务和一次性事务 我创建了一个事务消费者 我想确保我读取并处理某个主题的所有消息 如果事务失败并且消息因此丢失 Kafka 仍会提交偏移量 更正式地说 如果流处理应用程序消费消息 A 并生成消息 B 使得 B F
  • 如何将重音字符与 PHP preg 匹配?

    我想让我的用户不仅可以选择填写字母和数字 还可以选择 特殊 字母 例如 等 但是 我不希望他们能够使用符号如 等 有没有办法编写正则表达式来完成此任务 最好不要指定每个特殊字母 我现在有 reg w 你可以使用Unicode 字符属性 ht
  • networkx 有向图属性错误 self._succ

    Context 我正在尝试运行另一位研究人员的代码 它描述了湾区道路网络的交通模型 该模型容易受到地震灾害的影响 我是 Python 新手 因此非常感谢您帮助调试以下错误 Issue 当我尝试按照文件中提供的示例数据运行代码时 按照自述文件
  • Membership.DeleteUser 未删除用户的所有相关行

    Membership DeleteUser 设法删除我要删除的用户的用户配置文件 为什么它不删除它存储在的信息webpages membership 我目前没有使用角色 因此请记住这一点以获取答案 我进行了测试并验证了这一点SimpleMe
  • 可重用预处理器 __COUNTER__

    我正在做一些模板元编程 主要是编写我自己的编译时间列表 但我也有一些预处理器魔法 我想用它们来使事情变得更容易 如果可能的话 我想做的是创建一个函子的编译时列表 该部分已完成 但用于简化创建 并添加到列表中 的宏尚未完成 简单举个例子 te
  • 如何实现Web应用程序的屏幕共享? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Prologue 我想问 如何创建在网络上共享桌面屏幕的解决方案 但后来发现有很多这样的问题 这个任务非常复杂 无法用几个字符串来回答
  • 如何防止我的 .Net dll 被添加为引用?

    假设我编写了一个 Net dll 并希望将其与我的应用程序一起分发 我怎样才能防止任何有能力安装 VS 副本的用户向自己的应用程序添加对此 dll 的引用 无法阻止用户添加引用 这是 DLL 部分的被动操作 您无法采取任何措施来阻止它发生
  • 如果不存在则创建

    我有一个 Django 应用程序 它从 Web API 读取数据并将其放入数据库中 有没有办法从模式创建新对象 但如果对象已经存在 则可以防止重复异常 换句话说 有没有办法保存一个对象 但如果它已经存在则什么都不做 Model object
  • 通过 Powershell 在 IIS 7.5 中启用模拟

    我希望有人可以提供帮助 我正在尝试在 IIS 7 的身份验证会话下启用 ASP Net 模拟 我已使用以下命令启用了其他部分 Set WebConfigurationProperty filter system WebServer secu
  • 在 Perl 中启动非等待后台进程

    我有一个 Perl 脚本 需要在后台启动另一个进程并退出 而不等待其他脚本完成 StackOverflow 上有很多线程介绍如何在 Perl 中等待或如何不等待其他编程语言 但我似乎找不到 Perl 的正确答案 我已经阅读了相当多的内容 并
  • 为什么 foreach %dopar% 每增加一个节点就会变慢?

    我编写了一个简单的矩阵乘法来测试网络的多线程 并行化功能 我注意到计算速度比预期慢得多 The Test很简单 乘以 2 个矩阵 4096x4096 并返回计算时间 矩阵和结果都不被存储 计算时间并非微不足道 50 90 秒 具体取决于您的
  • 如何向枚举添加多个属性?

    我有一个名为的 SQL 查找表客户信用解决计划行动类型我想转换为enum questions tagged enum in c questions tagged c 23 非常基本的要求 对吧 正确的 我的桌子 现在enum questio
  • co_await 似乎不是最理想的?

    我有一个异步函数 void async foo A a B b C c function
  • IE11框架通知栏保存按钮

    在装有 MS Excel 2010 和 IE11 的 64 位系统上 我使用此代码自动从网站下载过程 hWnd FindWindowEx IE hWnd 0 Frame Notification Bar vbNullString If hW
  • 如何将文件读入整数数组

    在我的应用程序文档文件夹中 我有一个文件 我试图将其逐字节读入数组UInt8其中每个元素代表一个字节 我该怎么做呢 该文件恰好名为 Q1 dat 这是我不成功的尝试 func readArray gt Int if let arrayPat