import java.io.UnsupportedEncodingException;
import java.util.Arrays;public class Test{
public static void main(String[] args){
try {
System.out.println("中文");
System.out.println(Arrays.toString("中文".getBytes("UNICODE")));
System.out.println(Arrays.toString("中文".getBytes("GB2312")));
System.out.println(Arrays.toString("中文".getBytes("ISO8859_1")));
System.out.println(Arrays.toString("中文".getBytes("UTF-8")));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
中文
[-1, -2, 45, 78, -121, 101]
[-42, -48, -50, -60]
[63, 63]
[-28, -72, -83, -26, -106, -121]----------------------
这里最后的UTF-8为什么有6个呢,以前看了一个帖子说UNICODE后面会多出两个字节来,这里的UTF-8也是最后多出两个吗,还是说"中""文"在UTF-8里各需要3个字节表示????另外怎么样以这样的数组形式显示出0xFF,0x01之类的形式,不要byte类型的..怎么样可以让一个0xFF形式的数字输入给byte,让它以相应的有符号数形式显示,又怎么让byte类型的数以0xFF这样的无符号数显示??

解决方案 »

  1.   

    没有搞过这样的东西,也不知道如何搞呀,帮忙你top onse;
      

  2.   

    AUTF-8 的编码长度是可变的,根据 UTF-8 规范,可以采用 1~6 个字节来表示一个
    Unicode 字符(目前的 Unicode 只定义到 U+1FFFFF,因此目前 UTF-8 采用 1~4
    个字节表示)。Unicode 编码范围为 U+0800~U+FFFF 的字符,在 UTF-8 中均采用 3 个字节表示。
    B写了个 ByteUtil 工具类,将 byte[] 传进去的话,可以传出十六进制表示的一串字符串:public class ByteUtil {    private final static char[] HEX = "0123456789abcdef".toCharArray();     public static String bytes2Hex(byte[] bys) {
            char[] chs = new char[bys.length * 2 + bys.length - 1];
            for(int i = 0, offset = 0; i < bys.length; i++) {
                if(i > 0) {
                    chs[offset++] = ' ';
                }
                chs[offset++] = HEX[bys[i] >> 4 & 0xf];
                chs[offset++] = HEX[bys[i] & 0xf];
            }
            return new String(chs);
        }
    }
    C怎么样可以让一个0xFF形式的数字输入给byte,让它以相应的有符号数形式显示,
    又怎么让byte类型的数以0xFF这样的无符号数显示??
    ————————————————————————————————————
    1,byte b = (byte)0xff;
    2,Java 中没有 byte 无符号数,因此用 byte 无法实现。要实现的话,得提升为 int 类型。
         byte b = (byte)0xff;
        int a = b & 0xff;