繁体   English   中英

将NSString转换为字节数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM