【问题标题】:convert NSString to Byte Array将 NSString 转换为字节数组
【发布时间】:2011-04-11 06:05:28
【问题描述】:

我试过用谷歌搜索,但没有得到所需的确切答案。

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

另外我想知道iPhone中NSString转byteArray的结果和JAVA中string转byteArray的结果一样吗?

提前感谢您的帮助...

【问题讨论】:

    标签: java iphone nsstring bytearray


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      NSData* bytes = [str dataUsingEncoding:NSUTF8StringEncoding];
      

      iPhone中NSString转byteArray的结果和JAVA中string转byteArray的结果一样吗?

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

      【讨论】:

      • 正如 Caleb 所说,NSData 有一个方法 -bytes 来获取字节数组形式的数据。
      【解决方案3】:

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

      #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;
          }
      

      谢谢,开发者

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多