我尝试使用谷歌搜索,但没有按要求得到确切的答案。
我想在iPhone中将NSString转换为字节数组。
另外我想知道在iPhone中将NSString转换为byteArray的结果与在JAVA中将字符串转换为byteArray的结果相同吗?
提前感谢您的帮助......
答案 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;
}
谢谢,开发者