如何在 Swift 中查看 Data 变量中的实际字节数

Posted

技术标签:

【中文标题】如何在 Swift 中查看 Data 变量中的实际字节数【英文标题】:How to view the actual bytes in a Data variable in Swift 【发布时间】: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] 吗? 我已经更正了这个问题。 【参考方案1】:

如下创建Data的扩展:

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

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

po data.bytes

【讨论】:

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

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

【讨论】:

以上是关于如何在 Swift 中查看 Data 变量中的实际字节数的主要内容,如果未能解决你的问题,请参考以下文章

在 SWIFT 中关闭 segue 之前保存变量

在Swift 3中,如何从Data获取UnsafeRawPointer?

如何从 Swift SpriteKit 中的另一个 SKScene 访问变量

如何在 Swift 中的 Core Data 中保存多个项目

CLLocationDegrees 到 Swift 中的字符串变量

我应该如何在 Swift 中的标签中获取变量?