【问题标题】:How to view the actual bytes in a Data variable in Swift如何在 Swift 中查看 Data 变量中的实际字节数
【发布时间】:2019-03-29 00:52:16
【问题描述】:

我在 Swift 代码中有一个 Data 类型的变量,使用 Xcode 10.1,称为 data。我可以在调试器中看到它,但我不知道实际值存储在哪里。它应该包含一个字母(一个字节)和三个 Uint8 值,都是 0-255,所以它应该是 4 个字节。第一个 _length 显示为 6,所以我不知道还可以添加什么(我想查看其中实际内容的一个原因)(如下)。但我不明白二进制值在哪里。 _rawValue 似乎不是它,因为它包含 4.5 个字节。也许它是一个指针,正如它所说的“RawPointer”?

实际字节存储在哪里?

编辑: 通过设置一个等于 data[i] 的新变量,我确实确定了字节数是正确的(我发现代码将我不知道的东西放入其中)。例如,我的字符串是“!C 0 21 255 17”,即 6 个字节。

但是,我仍然很想找到我的问题的答案:在调试期间有没有办法查看元素而不创建新的变量来检查?

【问题讨论】:

  • 注意数据符合随机访问收集。您可以使用data[0] 之类的下标检查每个字节 (UInt8) 的值。您也可以将其打印为数组。 print(Array(data))
  • 您只需要 3 个字节即可存储 3 个 UInt8 值。每个 UInt8 只需要一个字节。 1 字节 = 8 位
  • 将数据显示为十六进制时,每个字节需要两个十六进制值 (0...9)+(a...f) = 16. 16x16 = 256 (0...255)
  • 是的,我累了! @LeoDabus 你当然是正确的字节数。我可以创建一个新变量 byte0 = data[0] 并在调试器中查看它,但是没有办法直接在调试器中查看 data[0] 吗?
  • 我已经更正了这个问题。

标签: swift xcode xcode10.1


【解决方案1】:

如下创建Data的扩展:

extension Data {
    public var bytes: [UInt8]
    {
        return [UInt8](self)
    }
}

调试过程中数据的字节数可以查看为:

po data.bytes

【讨论】:

  • 这是一个简单易行的解决方案。绝对节省了我一些时间!
【解决方案2】:

只需在调试控制台中输入po data as NSData。你会看到像<066465666768>这样的十六进制字节

【讨论】:

    猜你喜欢
    • 2018-10-08
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2014-01-26
    相关资源
    最近更新 更多