【问题标题】:Converting NSString to NSData and vice versa将 NSString 转换为 NSData,反之亦然
【发布时间】:2011-10-08 09:53:00
【问题描述】:

我在尝试将 NSString 转换为 NSData 时遇到问题,反之亦然。 我正在尝试将加密字符串存储到我的数据库中。为此,我正在使用 AES 算法。现在我正在做的是加密NSData,并使用以下方法将其转换为NSString:

// Not woking
NSString *strTemp = [[NSString alloc] initWithData:encData encoding:NSUTF8StringEncoding]; 

// Working
NSString *strTemp = [[NSString alloc] initWithData:encData encoding:NSASCIIStringEncoding];

为什么 NSData 在使用 NSUTF8StringEncoding 时没有转换。当我尝试使用 NSASCIIStringEncoding 转换字符串时,方法相同:

// Not working
[strTemp dataUsingEncoding:NSASCIIStringEncoding];

// Working
[strTemp dataUsingEncoding:NSUTF8StringEncoding];

为什么在将NSString 转换为NSData 时NSASCIIStringEncoding 不起作用?

【问题讨论】:

    标签: iphone nsstring nsdata data-conversion


    【解决方案1】:

    NSString 到 NSData:

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

    NSData 到 NSString:

    NSString* newStr = [[NSString alloc] initWithData:theData
                                             encoding:NSUTF8StringEncoding];
    

    【讨论】:

    • 这是我在我的第一个代码 spinit 中所做的......但是得到一个零字符串
    • 这里的代码是总的......我有一个字符串我正在使用[strTemp dataUsingEncoding:NSUTF8StringEncoding]在数据中转换它,但[strTemp dataUsingEncoding:NSASCIIStringEncoding]的工作方式与我使用[strTemp dataUsingEncoding:NSUTF8StringEncoding]得到的数据不一样我正在转换回来使用[[NSString alloc] initWithData:encData encoding:NSASCIIStringEncoding] 进行字符串处理是有效的,但[[NSString alloc] initWithData:encData encoding:NSUTF8StringEncoding] 是无效的。所以每次我的转换发生时,我都使用不同的编码,但不能保证相同的结果。
    • NSString* str= @"teststring"; NSData* 数据=[str dataUsingEncoding:NSASCIIStringEncoding]; NSLog(@"%@",data); NSString* newStr = [[NSString alloc] initWithData:数据编码:NSASCIIStringEncoding]; NSLog(@"%@",newStr); NSString* str1= @"teststring"; NSData* data1=[str1 dataUsingEncoding:NSUTF8StringEncoding]; NSLog(@"%@",data1); NSString* newStr1 = [[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding]; NSLog(@"%@",newStr1);我已经测试过它并且工作正常!在这两种情况下
    【解决方案2】:

    请注意NSASCIIStringEncoding 和NSUTF8StringEncoding 需要匹配字符串中的字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 2020-02-19
      • 2015-01-03
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多