Nếu tôi chuyển đổi một ký tự thành byte
và sau đó quay lại char
, nhân vật đó biến mất một cách bí ẩn và trở thành cái gì đó khác. Sao có thể như thế được?Byte và chuyển đổi char trong Java
Đây là mã:
char a = 'È'; // line 1
byte b = (byte)a; // line 2
char c = (char)b; // line 3
System.out.println((char)c + " " + (int)c);
Cho đến dòng 2 mọi thứ đều tốt:
Trong dòng 1 tôi có thể in "a" trong giao diện điều khiển và nó sẽ hiển thị "e".
Trong dòng 2 tôi có thể in "b" trong bảng điều khiển và nó sẽ hiển thị -56, nghĩa là 200 vì byte được ký. Và 200 là "È". Vì vậy, nó vẫn ổn.
Nhưng có gì sai trong dòng 3? "c" trở thành cái gì khác và chương trình in ? 65480
. Đó là một cái gì đó hoàn toàn khác.
Tôi nên viết gì ở dòng 3 để có được kết quả chính xác?
Một 'byte' là' 8 bit'.'char' là' 16 bit'. Có ý tưởng? –
char mất 2byte. – Ankit
@RohitJain Và một ký tự - theo đó tôi có nghĩa là một điểm mã Unicode - có thể lấy hai ký tự hoặc bốn byte. Hơn nữa, ai biết những gì bình thường hóa hình thành những thứ đang ở? Chuỗi '" È "' có thể tự bao gồm một hoặc hai điểm mã tùy thuộc vào việc nó có ở dạng chuẩn hóa C hay D tương ứng hay không. – tchrist