【问题标题】:How to display hexadecimal bytes using NSLog如何使用 NSLog 显示十六进制字节
【发布时间】:2011-04-12 06:45:22
【问题描述】:

如何使用 NSLog 显示以下字节?

const void *devTokenBytes = [devToken bytes];

【问题讨论】:

    标签: objective-c byte nslog


    【解决方案1】:

    如果你想要一个十六进制序列:

    NSMutableString *hex = [NSMutableString stringWithCapacity:[devToken length]];
    for (int i=0; i < [devToken length]; i++) {
      [hex appendFormat:@"%02x", [devToken bytes][i]];
    }
    

    【讨论】:

    • (!)Argument type 'const void' is incomplete
    【解决方案2】:

    假设devTokenNSData * 类型(来自bytes 调用),您可以在NSData 上使用description 方法来获取包含数据字节的十六进制表示的字符串。请参阅NSData class reference

    NSLog(@"bytes in hex: %@", [devToken description]);

    【讨论】:

    • 但现在我收到错误消息“警告:从不兼容的指针类型传递 'NSLog' 的参数 1”
    • 因为上面的代码有错误。他省略了字符串文字前面的@。即 NSLog("...") 而不是 NSLog(@"...")。
    • jer,Chuck:感谢您分别指出和修复。最近 C 对我来说太多了……
    • 很好奇,当我输出十六进制值时,它带有&lt;&gt;。我该如何摆脱它?
    猜你喜欢
    • 2012-01-04
    • 2015-06-15
    • 1970-01-01
    • 2017-08-23
    • 2015-08-08
    • 2017-09-13
    • 1970-01-01
    • 2020-11-11
    • 2014-03-11
    相关资源
    最近更新 更多