美文网首页ios 屏幕适配篇iOS项目iOS安全
关于字符串和byte数组在java和ios之间兼容的解决办法

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

作者: 小鹏学长168 | 来源:发表于2019-02-19 15:19 被阅读0次

    之前在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: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  
    

    编码一致!点赞

    参考文档:http://blog.csdn.net/miemie1320/article/details/7761848

    相关文章

      网友评论

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

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