将NSString转换为NSDAta

时间:2010-09-11 18:48:29

标签: iphone-sdk-3.0

在我的项目中我想将NSString值转换为NSdata而不进行编码,即我正在使用

NSData* aData = [[NSData alloc] initWithData:[[self getStringValue] dataUsingEncoding:NSUTF8StringEncoding]];

当我使用它时,字符串值被编码但我想要相同的字符串值而不编码,我怎么能得到这个

谢谢

3 个答案:

答案 0 :(得分:1)

您始终需要选择某种类型的编码。我总是推荐NSUTF8StringEncoding。但是如果你只需要存储的原始字符字节而不是UTF8编码,这些是你最好的选择。

// for latin/english only characters
NSData* aData = [self dataUsingEncoding:NSACSIIStringEncoding];

// for international characters
NSData* aData = [self dataUsingEncoding:NSUnicodeStringEncoding]; 

答案 1 :(得分:0)

您需要编码,否则无法使用。它需要知道字符串存储的格式。它需要知道存储字节的格式。但是你可能应该使用NSACSIIStringEncoding。

答案 2 :(得分:0)

要按原样转换字符串,请使用以下代码:

-(NSData*)getDataFromString:(NSString*)theString
{
    NSMutableData *mData = [NSMutableData data];
    unsigned value;
    NSScanner *scanner = [NSScanner scannerWithString:theString];
    while(![scanner isAtEnd]) {
        [scanner scanHexInt:&value];
        value = htonl(value);
        [mData appendBytes:&value length:sizeof(value)];
    }

    return [NSData dataWithData:mData];
}

并调用此函数:

NSData *data = [self getDataFromString:@"Your_String"];