ios 和 java byte[]的兼容处理

来源:互联网 发布:java的对象是什么意思 编辑:程序博客网 时间:2024/06/06 16:26

之前在Java上写过String转为byte数组的代码,后来在开发iPhone程序的时候,发现也需要把NSString转为byte数组,并且需要达到跟java程序兼容。但是发现java自身的默认编码机制为iso-8859-1,而iOS的默认编码机制为utf-8,所以直接编码并不能达到两者兼容的问题。后来查阅相关资料,最后解决了编码兼容的问题,而且中英文都通用。

如下为java代码:


        String str = "你好啊,aBc!";        ByteArrayOutputStream baos = new ByteArrayOutputStream();        DataOutputStream outputstream = new DataOutputStream(baos);        outputstream.writeChars(str);        byte[] contents = baos.toByteArray();        for (int i = 0; i < contents.length; i++) {            System.out.println("contents:"+contents[i]);        }

最后打印为:

contents:79contents:96contents:89contents:125contents:85contents:74contents:0contents:44contents:0contents:97contents:0contents:66contents:0contents:99contents:0contents:33

ios代码:

    NSString *str = @"你好啊,aBc!";    NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(NSUTF16BigEndianStringEncoding);    NSData *data = [str dataUsingEncoding:enc];    Byte *byte = (Byte *)[data bytes];    for (int i=0 ; i<[data length]; i++) {        NSLog(@"byte = %d",byte[i]);    }

最后打印结果为

2012-07-19 10:07:46.967 encoding[593:f803] byte = 792012-07-19 10:07:46.969 encoding[593:f803] byte = 962012-07-19 10:07:46.969 encoding[593:f803] byte = 892012-07-19 10:07:46.970 encoding[593:f803] byte = 1252012-07-19 10:07:46.970 encoding[593:f803] byte = 852012-07-19 10:07:46.970 encoding[593:f803] byte = 742012-07-19 10:07:46.970 encoding[593:f803] byte = 02012-07-19 10:07:46.971 encoding[593:f803] byte = 442012-07-19 10:07:46.971 encoding[593:f803] byte = 02012-07-19 10:07:46.971 encoding[593:f803] byte = 972012-07-19 10:07:46.971 encoding[593:f803] byte = 02012-07-19 10:07:46.972 encoding[593:f803] byte = 662012-07-19 10:07:46.972 encoding[593:f803] byte = 02012-07-19 10:07:46.972 encoding[593:f803] byte = 992012-07-19 10:07:46.972 encoding[593:f803] byte = 02012-07-19 10:07:46.973 encoding[593:f803] byte = 33

编码达到了一致!

谢谢 羏仔
博客原地址:http://blog.csdn.net/miemie1320/article/details/7761848

评论区摘要:

一楼和楼主都没有搞定为什么ios和java字节数组不兼容,真正的原因是语言的原因,java是字节数组是高位的,c字节数组是低位的。两者为了达到统一性,必须有一方需要转换。楼主里写的就 是转成了高位的。
唉 你们两位好好学学基本功吧

0 0
原创粉丝点击