【发布时间】:2011-04-11 06:05:28
【问题描述】:
我试过用谷歌搜索,但没有得到所需的确切答案。
我想在 iPhone 中将 NSString 转换为字节数组。
另外我想知道iPhone中NSString转byteArray的结果和JAVA中string转byteArray的结果一样吗?
提前感谢您的帮助...
【问题讨论】:
标签: java iphone nsstring bytearray
我试过用谷歌搜索,但没有得到所需的确切答案。
我想在 iPhone 中将 NSString 转换为字节数组。
另外我想知道iPhone中NSString转byteArray的结果和JAVA中string转byteArray的结果一样吗?
提前感谢您的帮助...
【问题讨论】:
标签: java iphone nsstring bytearray
可能有许多不同的编码。如果您在 Objective-C 和 Java 中使用相同的编码,那么您应该得到相同的字节(或字符串,如果您采用另一种方式)。我希望 Java 使用 UTF8,它在 Cocoa 中指定为 NSUTF8StringEncoding。
NSString 中有几种方法可以将字符串转换为一堆 o' 字节。其中三个是:-cStringUsingEncoding:、-UTF8String 和 -dataUsingEncoding:。第一个返回一个 char * 指向一个以 null 结尾的 char 数组。第二个与调用第一个并指定 UTF8 几乎相同。第三个返回一个 NSData*,你可以直接使用 NSData 的-bytes 方法访问字节。
【讨论】:
NSData* bytes = [str dataUsingEncoding:NSUTF8StringEncoding];
iPhone中NSString转byteArray的结果和JAVA中string转byteArray的结果一样吗?
我相信这是由 UTF-8 标准化的,所以是的。
【讨论】:
NSData 有一个方法 -bytes 来获取字节数组形式的数据。
以下代码可能对您有所帮助。
#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;
}
谢谢,开发者
【讨论】: