如何在 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 3中,如何从Data获取UnsafeRawPointer?
如何从 Swift SpriteKit 中的另一个 SKScene 访问变量
如何在 Swift 中的 Core Data 中保存多个项目