将NSString转换为字节数组

时间:2011-04-11 06:05:28

标签: java iphone nsstring bytearray

我尝试使用谷歌搜索,但没有按要求得到确切的答案。

我想在iPhone中将NSString转换为字节数组。

另外我想知道在iPhone中将NSString转换为byteArray的结果与在JAVA中将字符串转换为byteArray的结果相同吗?

提前感谢您的帮助......

3 个答案:

答案 0 :(得分:3)

有许多不同的编码可能。如果在Objective-C和Java中使用相同的编码,那么你应该得到相同的字节(或字符串,如果你以其他方式进行)。我希望Java使用UTF8,它在Cocoa中指定为NSUTF8StringEncoding

NSString中有几种方法可以将字符串转换为字符串o'字节。其中三个是:-cStringUsingEncoding:-UTF8String-dataUsingEncoding:。第一个返回一个指向以null结尾的char数组的char *。第二个与调用第一个并指定UTF8几乎完全相同。第三个返回NSData *,您可以使用NSData的-bytes方法直接访问字节。

答案 1 :(得分:2)

NSData* bytes = [str dataUsingEncoding:NSUTF8StringEncoding];
  

在iPhone中将NSString转换为byteArray的结果与在JAVA中将字符串转换为byteArray的结果相同吗?

我相信这是由UTF-8标准化的,所以是的。

答案 2 :(得分:0)

以下代码可能会对您有所帮助。

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
    {
       NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
       NSString *str = @"Sample String";
       NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
       NSUInteger len = str.length;
       uint8_t *bytes = (uint8_t *)[data bytes];
       NSMutableString *result = [NSMutableString stringWithCapacity:len * 3];
       [result appendString:@"["];
       int i = 0;
       while(i < len){
       if (i) {
            [result appendString:@","];
       }
            [result appendFormat:@"%d", bytes[i]];
            i++;
       }
       [result appendString:@"]"];
       NSLog (@"String is %@",str);
       NSLog (@"Byte array is %@",result);
       [pool drain];
       return 0;
    }

谢谢,开发者