[英]convert NSString to Byte Array
我试过谷歌搜索但没有得到所需的确切答案。
我想在iPhone中将NSString转换为Byte Array。
另外我想知道在iPhone中将NSString转换为byteArray的结果与在JAVA中将字符串转换为byteArray的结果相同吗?
感谢您的帮助...
有许多不同的编码可能。 如果在Objective-C和Java中使用相同的编码,那么你应该获得相同的字节(或者字符串,如果你是以另一种方式)。 我希望Java使用UTF8,它在Cocoa中指定为NSUTF8StringEncoding
。
NSString中有几种方法可以将字符串转换为字节。 其中三个是: -cStringUsingEncoding:
-UTF8String
和-dataUsingEncoding:
. 第一个返回一个指向以null结尾的char数组的char *。 第二个与调用第一个并指定UTF8几乎完全相同。 第三个返回NSData *,您可以使用NSData的-bytes
方法直接访问这些字节。
NSData* bytes = [str dataUsingEncoding:NSUTF8StringEncoding];
在iPhone中将NSString转换为byteArray的结果与在JAVA中将字符串转换为byteArray的结果相同吗?
我相信这是由UTF-8标准化的,所以是的。
以下代码可以帮助您。
#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;
}
谢谢,开发人员
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.