【问题标题】:Convert unsigned char array to NSData and back将 unsigned char 数组转换为 NSData 并返回
【发布时间】:2012-01-11 09:31:41
【问题描述】:

如何在objective c 中将unsigned char 数组转换为NSData?

这是我想要做的,但它不起作用。 缓冲区是我的无符号字符数组。

NSData *data = [NSData dataWithBytes:message length:length];

【问题讨论】:

    标签: iphone objective-c nsdata arrays


    【解决方案1】:

    你可以使用这个 NSData 类方法

    + (id)dataWithBytes:(const void *)bytes length:(NSUInteger)length
    

    类似

    NSUInteger size = // some size
    unsigned char array[size];
    NSData* data = [NSData dataWithBytes:(const void *)array length:sizeof(unsigned char)*size];
    

    然后你可以像这样取回数组(如果你知道它是正确的数据类型)

    NSUInteger size = [data length] / sizeof(unsigned char);
    unsigned char* array = (unsigned char*) [data bytes];
    

    【讨论】:

    • 当我想取回数组时,这真的有效吗?我看不到您将数组分配给某些东西?
    • 已分配,在最后一行。但是[NSData bytes] 给出了无类型的结果,因此需要将其转换为您正在关注的类型。
    • 第一部分实际上将无符号字符复制到 NSData 中(如果您不希望使用 + (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length 代替),第二部分只是获取指向该数据的指针,它不会复制它回来了。
    • 最后一行不应该是:unsigned char* array = (unsigned char*) [data bytes]; ?这让我困惑了一分钟
    • @MarkRamotowski 很好发现,我不知道它逃脱了大家的关注超过 2 年...现在纠正。
    猜你喜欢
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 2013-05-16
    • 2011-10-19
    • 2013-09-23
    相关资源
    最近更新 更多