美文网首页
关于字符串和byte数组在java和ios之间兼容的解决办法。

关于字符串和byte数组在java和ios之间兼容的解决办法。

作者: 又又风月 | 来源:发表于2018-04-27 14:59 被阅读135次

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

    如下为java代码:

    String str = "你好啊,aBc!";  

    ByteArrayOutputStreambaos = new ByteArrayOutputStream();  

    DataOutputStreamoutputstream = new DataOutputStream(baos);  

    outputstream.writeChars(str);  

    byte[]contents = baos.toByteArray();  

    for (inti = 0; i < contents.length; i++) {  

        System.out.println("contents:"+contents[i]);  

    }  

    最后打印为:

    contents:79  

    contents:96  

    contents:89  

    contents:125  

    contents:85  

    contents:74  

    contents:0  

    contents:44  

    contents:0  

    contents:97  

    contents:0  

    contents:66  

    contents:0  

    contents:99  

    contents:0  

    contents: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 = 79  

    2012-07-19 10:07:46.969 encoding[593:f803] byte = 96  

    2012-07-19 10:07:46.969 encoding[593:f803] byte = 89  

    2012-07-19 10:07:46.970 encoding[593:f803] byte = 125  

    2012-07-19 10:07:46.970 encoding[593:f803] byte = 85  

    2012-07-19 10:07:46.970 encoding[593:f803] byte = 74  

    2012-07-19 10:07:46.970 encoding[593:f803] byte = 0  

    2012-07-19 10:07:46.971 encoding[593:f803] byte = 44  

    2012-07-19 10:07:46.971 encoding[593:f803] byte = 0  

    2012-07-19 10:07:46.971 encoding[593:f803] byte = 97  

    2012-07-19 10:07:46.971 encoding[593:f803] byte = 0  

    2012-07-19 10:07:46.972 encoding[593:f803] byte = 66  

    2012-07-19 10:07:46.972 encoding[593:f803] byte = 0  

    2012-07-19 10:07:46.972 encoding[593:f803] byte = 99  

    2012-07-19 10:07:46.972 encoding[593:f803] byte = 0  

    2012-07-19 10:07:46.973 encoding[593:f803] byte = 33  

    编码达到了一致!

    相关文章

      网友评论

          本文标题:关于字符串和byte数组在java和ios之间兼容的解决办法。

          本文链接:https://www.haomeiwen.com/subject/ezgblftx.html