tipo char de Java es Unicode de 16 bits

  • Java es un tipo Unicode Char 16 bits, sino también chino, dos bytes, pero si (por defecto del sistema general) o con UTF-8 se convierte en una matriz de bytes leídos, se convertirá en 3 bytes.
  • conjunto de caracteres Unicode, UTF-8 / UTF-16 reglas de codificación, o generalizada conjunto de caracteres Unicode y que incluye una pluralidad de reglas de codificación. Ese juego de caracteres especificado código binario, cada personaje reglas de codificación sólo especifica cómo almacenar el código binario.
  • A continuación, UTF-16 que una pregunta sobre el big-endian (orden de Big Endian) y el ascendente hacia la izquierda (orden de Little Endian) son (no más complejo UTF-8, por lo que es mejor para la causa de programación bajo Windows).
  • En Java, un carácter chino para el carbón, resultado getByte, si no se especifica la regla de codificación, el valor predeterminado es UTF-8, un chino de 3 bytes , si Unicode o UTF-16, por defecto es de 4 bytes, los dos primeros bytes representados 0xFEFF big endian, 0xFFEF indica ascendente hacia la izquierda , si se especifica UTF-16BE o UTF-16LE, es de 2 bytes ,
package IOTest;

import javax.management.StandardEmitterMBean;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

public class CharTest {
    public static void main(String[] args) throws UnsupportedEncodingException {
        //Java的char是两字节的Unicode字符(0-65535)
        char b='中';
        System.out.println((int)b);
        byte[] bs=char2Byte(b);
        System.out.println(byte2HexString(bs));
        byte[] cs=String.valueOf(b).getBytes("unicode");
        byte[] ds=String.valueOf(b).getBytes(StandardCharsets.UTF_16BE);
        byte[] es=String.valueOf(b).getBytes(StandardCharsets.UTF_16LE);
        byte[] fs=String.valueOf(b).getBytes(StandardCharsets.UTF_16);
        byte[] gs=String.valueOf(b).getBytes(StandardCharsets.UTF_8);
        System.out.println(byte2HexString(cs));
        System.out.println(byte2HexString(ds));
        System.out.println(byte2HexString(es));
        System.out.println(byte2HexString(fs));
        System.out.println(byte2HexString(gs));
    }
    public static byte[] char2Byte(char c){
        byte[] ans=new byte[2];
        ans[1]=(byte)(c&0x00ff);
        ans[0]=(byte)((c&0xff00)>>8);
        return ans;
    }
    public static String byte2HexString(byte[] bs){
        StringBuilder sb=new StringBuilder();
        for(byte b:bs){
            int c=b&0x0f;
            if(c<10){
                sb.append(c);
            }else{
                sb.append((char)((c-10)+'A'));
            }
            c=(b&0xf0)>>4;
            if(c<10){
                sb.append(c);
            }else{
                sb.append((char)((c-10)+'A'));
            }
            sb.append(' ');
        }
        return sb.toString();
    }
}

Supongo que te gusta

Origin www.cnblogs.com/zxcoder/p/12571295.html
Recomendado
Clasificación