【问题标题】:Reading specified byte from NSData - output to label从 NSData 读取指定字节 - 输出到标签
【发布时间】:2014-01-03 03:31:40
【问题描述】:

我有一个加载到缓冲区的文件。该文件来自一个 URL,包含 31 个字节。到目前为止一切顺利。

如何读取特定字节,比如字节数 20,然后将普通十进制(从二进制“转换”)输出到标签?

作为参考,我已将文件加载到名为“data”的 NSData 变量中,我的标签名为“currentBattery”。 :)

【问题讨论】:

    标签: objective-c nsdata


    【解决方案1】:

    您可以使用[data bytes] 并将其视为字符数组并读取20。或[data getBytes: &byte range: ...]

    ((char*)[data bytes])[20]
    

    应该是最简单的。我会先检查数据的长度以确定。

    【讨论】:

    • 我知道第 20 个字节只有一个字节长,我应该在哪里声明?
    • [NSString stringWithFormat: @"%d", (char)c] 甚至@"%c"。如果您想确定然后将其屏蔽 0xFF & (char)c
    • 谢谢。我设法取出我想要的字节,但现在我无法让它在标签上显示正常数字。它在控制台中以十六进制 (2e) 的形式吐出,当我将它连接到标签时,它显示:“2013520544”。如何将我的字节变量 (d1) 连接到标签,并以正常数字显示?
    • 像我说的那样屏蔽掉这个值。这与执行 char x = ...; 相同。 [NSString stringWithFormat: ..., x];它可能会显示很大的数字,因为当您执行 %d 时它正在读取数据中的其他值
    • [NSString stringWithFormat:@"%d", 0xFF & ((char*)[data bytes])[20]];这就是说我只想显示任何内容的第一个字节值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2012-01-31
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多