Java - 将byte []转换为char []。编码是UTF-16

时间:2015-06-20 10:51:25

标签: java arrays character-encoding type-conversion utf-16

我需要在Java中将byte []转换为char []。 使用的Unicode编码是UTF-16。

简而言之,我需要Java等同于c#'

UnicodeEncoding.Unicode.GetChars(byte[] bytes);

另外,我只需要将byte []的一部分转换为char []

public virtual char[] GetChars(byte[] bytes, int index, int count);

3 个答案:

答案 0 :(得分:1)

你可以试试这个:

byte[] b = ...
char[] c = new String(b, "UTF-16").toCharArray();

来自String(byte[] bytes, String charsetName)

  

使用指定的字符集解码指定的字节数组,构造一个新的String

答案 1 :(得分:0)

C#API:

  

public virtual char [] GetChars(byte [] bytes);

爪哇:

  

byte [] byte = ...

     

char [] char = new String(byte,“UTF-16”)。toCharArray();

返回char []的Java方法:

data is undefined

C#API:

  

public virtual char [] GetChars(byte [] bytes,int index,int count);

爪哇:

  

迭代字节数组中的必需字节

public static char[] getCharsFromBytes(byte[] bytes, String type) {
    try {
        String byteConvert = new String(bytes, "UTF-16");
        return byteConvert.toCharArray();
    } catch (UnsupportedEncodingException ex) {
        Logger.getLogger(DataTypeUtil.class.getName()).log(Level.SEVERE, null, ex);
        return null;
    }
}

答案 2 :(得分:0)

public static char[] GetChars(byte[] bytes, int index, int count) {
    try {
        return new String(java.util.Arrays.copyOfRange(bytes,index,index+count), "UTF-16").toCharArray();
    } catch (java.io.UnsupportedEncodingException e) {
        assert false: "Your JRE is broken (UTF-16 not supported)";
        return null;
    }
}