首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

透过char将String转换成byte数组

2013-09-27 
通过char将String转换成byte数组这里没有问题。。。。你说错了吧?。。。。恩,我说的不准确,这么写其实也是可以的。[

通过char将String转换成byte数组



这里没有问题。。。。你说错了吧?。。。。

恩,我说的不准确,这么写其实也是可以的。
[解决办法]
Java的字符集转化都有API的,包括GBK, 研究getBytes()去。
[解决办法]
不知道为何你非要用char来转, 如果实在要用的话,看看这个方法能否满足你的要求吧





package study.string.length;

import java.io.UnsupportedEncodingException;

import sun.io.CharToByteConverter;
import sun.io.MalformedInputException;

public class StrLenght {

    public static void main(String[] args) throws UnsupportedEncodingException, MalformedInputException {
        String str = "a中";
        byte[] chars = str.getBytes();
        for (int x = 0; x < chars.length; x++) {
            System.out.println(chars[x]);
        }

        print(str);
    }

    public static void print(String str) throws UnsupportedEncodingException, MalformedInputException {
        byte[] result = new byte[str.getBytes().length];
        int p = 0;
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            byte l = (byte) c;
            byte h = (byte) (c >> 8);

            if (h == 0) {
                result[p++] = l;
            } else {
                char[] cs = new char[1];
                cs[0] = c;

                CharToByteConverter converter = CharToByteConverter.getConverter("GBK");
                byte[] br = converter.convertAll(cs);

                result[p++] = br[0];


                result[p++] = br[1];
            }

        }
        for (int x = 0; x < result.length; x++) {
            System.out.println(result[x]);
        }
    }

}



[解决办法]
如果非要一个字符一个字符处理,可以用 CharBuffer。
不过还是用 String 最简单,一般不会出错。

热点排行