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
- ios 和 java byte[]的兼容处理
- 关于字符串和byte数组在java和ios之间兼容的解决办法。
- 关于字符串和byte数组在java和ios之间兼容的解决办法
- 关于字符串和byte数组在java和ios之间兼容的解决办法。
- 关于字符串和byte数组在java和ios之间兼容的解决办法
- java虚拟机对byte、char和short的处理方式
- java的char和byte
- java 图片处理byte[]
- 微信页面上传图片,安卓和ios上传接口的兼容处理
- JAVA的String和byte[]的关系
- java的byte的学习和理解
- ios iPhone5和iPhone4的屏幕兼容
- Byte[]和byte[]的转换
- java int和byte数组的转换
- java 中 char 和 byte 的转换
- java中char和byte的转换
- java int long 和byte的转换
- [JAVA] string 和 byte之间的转换
- Django filter符合表示"不等于"
- Objective-c #define 和 static const
- SpringMVC:dispatcherServlet对HandlerMapping的初始化
- C++自定义缓冲区streambuf
- java学习笔记3
- ios 和 java byte[]的兼容处理
- ios开发多线程篇——GCD的基本使用
- 2016腾讯面试经验
- Python = "我为什么开始学Python"
- A simple IOCP Server/Client Class
- CodeForces - 664A Complicated GCD (技巧)水
- 使用Html.fromHtml()怎么加载Html中的图片
- Jquery Ajax 使用备忘
- 钻一钻Tomcat 之 Tomcat不配置环境变量(Ⅶ)