【问题标题】:NSData to NSString and vise versaNSData 到 NSString 反之亦然
【发布时间】:2012-02-16 01:27:04
【问题描述】:

提示我的用户输入 RAW NSData(例如:)

这个原始数据是一个 AES 加密的 NSString。

但是,问题在于将那些实际字节的数据 转换为 NSData 类型本身。

  1. 提示输入数据
  2. 输入数据 --> @""
  3. 需要将输入的数据变成 NSData 类型,而不是传递的 NSString。

简而言之;我该如何做这个: 进入 NSData 的数据? 使整数保存数据 HALF 有效(因为类型太短)所以它需要是一个 NSString。

【问题讨论】:

    标签: objective-c nsstring aes nsdata


    【解决方案1】:

    要将十六进制字符串转换为数据,请参阅我在此处发布的函数: Converting a hexadecimal string into binary in Objective-C

    您需要稍微修改它以允许括号字符和空格。

    去另一个方向:

    NSString *CreateHexStringWithData(NSData *data)
    {
        NSUInteger inLength = [data length];
        unichar *outCharacters = malloc(sizeof(unichar) * (inLength * 2));
    
        UInt8 *inBytes = (UInt8 *)[data bytes];
        static const char lookup[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
    
        NSUInteger i, o = 0;
        for (i = 0; i < inLength; i++) {
            UInt8 inByte = inBytes[i];
            outCharacters[o++] = lookup[(inByte & 0xF0) >> 4];
            outCharacters[o++] = lookup[(inByte & 0x0F)];
        }
    
        return [[NSString alloc] initWithCharactersNoCopy:outCharacters length:o freeWhenDone:YES];
    }
    

    你也可以使用:

    [NSString stringWithFormat:@"%@", data]
    

    使用 -[NSData description] 获取带有括号和空格的版本。

    【讨论】:

    • 不幸的是,这不是我想要的。 NSData 是加密的,所以它不是一个实际的 NSString。我只需要将它存储到一个类型中。
    • 我使用了您的转换,但是如果没有将字符串转换为实际的 NSData,它就没有用。赞成;但罗布得到了接受
    【解决方案2】:

    这与NSString (hex) to bytes 极为相似。如果您删除多余的标点符号,那里的答案将对您有用。

    【讨论】:

    • 我结合使用了这个和 iccir 的解决方案。我需要十六进制字符串才能使用此解决方案!谢谢!
    【解决方案3】:

    要将 NSData 转换为 NSString 使用:

    NSData* returnData;
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
    

    要将 NSString 转换为 NSData 使用:

    NSString* str = @"returnString";
    NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 2020-02-19
      • 2015-01-03
      • 1970-01-01
      • 2014-11-08
      相关资源
      最近更新 更多