from:http://blog.csdn.net/miemie1320/article/details/7761848
之前在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 &#61; 0; i < contents.length; i&#43;&#43;) {
- System.out.println("contents:"&#43;contents[i]);
- }
最后打印为&#xff1a; - 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代码&#xff1a;
- NSString *str &#61; &#64;"你好啊,aBc!";
- NSStringEncoding enc &#61; CFStringConvertEncodingToNSStringEncoding(NSUTF16BigEndianStringEncoding);
- NSData *data &#61; [str dataUsingEncoding:enc];
- Byte *byte &#61; (Byte *)[data bytes];
- for (int i&#61;0 ; i<[data length]; i&#43;&#43;) {
- NSLog(&#64;"byte &#61; %d",byte[i]);
- }
最后打印结果为
- 2012-07-19 10:07:46.967 encoding[593:f803] byte &#61; 79
- 2012-07-19 10:07:46.969 encoding[593:f803] byte &#61; 96
- 2012-07-19 10:07:46.969 encoding[593:f803] byte &#61; 89
- 2012-07-19 10:07:46.970 encoding[593:f803] byte &#61; 125
- 2012-07-19 10:07:46.970 encoding[593:f803] byte &#61; 85
- 2012-07-19 10:07:46.970 encoding[593:f803] byte &#61; 74
- 2012-07-19 10:07:46.970 encoding[593:f803] byte &#61; 0
- 2012-07-19 10:07:46.971 encoding[593:f803] byte &#61; 44
- 2012-07-19 10:07:46.971 encoding[593:f803] byte &#61; 0
- 2012-07-19 10:07:46.971 encoding[593:f803] byte &#61; 97
- 2012-07-19 10:07:46.971 encoding[593:f803] byte &#61; 0
- 2012-07-19 10:07:46.972 encoding[593:f803] byte &#61; 66
- 2012-07-19 10:07:46.972 encoding[593:f803] byte &#61; 0
- 2012-07-19 10:07:46.972 encoding[593:f803] byte &#61; 99
- 2012-07-19 10:07:46.972 encoding[593:f803] byte &#61; 0
- 2012-07-19 10:07:46.973 encoding[593:f803] byte &#61; 33
编码达到了一致&#xff01;