NSString initWithBytes结果在iOS上是错误的

时间:2012-06-23 02:54:14

标签: objective-c ios nsstring

代码在这里:

    NSString * str = [[NSString alloc] initWithFormat:@"abcdefgh"];
    void * pbuffer = malloc(128);
    memset(pbuffer, 0, 128);
    NSUInteger nsu;
    NSRange range = NSMakeRange(0, 128);
    [str getBytes:pbuffer maxLength:128 usedLength:&nsu encoding:NSUnicodeStringEncoding options:0 range:range remainingRange:nil];

    NSString * str2 = [[NSString alloc] initWithBytes:pbuffer length:128 encoding:NSUnicodeStringEncoding];

然后我会看到字符串str和str2的结果会有所不同。 缓冲区仍然正确,内存类似于“61 00 62 00 ....”。 str2中的内存类似于“00 61 00 62 ......”。

我的测试代码中出现了什么问题?

谢谢!

1 个答案:

答案 0 :(得分:2)

使用NSUTF8StringEncoding代替NSUnicodeStringEncoding