그것은 몇 바이트 당신이 정말로 기억 문자 설명했습니까?

몇 바이트를 차지 문자는 같은 코딩 비트 바이트가 동일하지 않습니다 차지하지 않는, 아주 좋지 않은 기억. 몇 바이트를 차지 문자 코드에서 간단한 표정으로 아래.

String s = "情系IT";
        try {
            byte[] bytes1 = s.getBytes("gbk");
            for (byte b : bytes1) {
                System.out.print(Integer.toHexString(b & 0xff)+"  ");
            }
            System.out.println();
            byte[] bytes2 = s.getBytes("utf-8");
            for (byte b : bytes2) {
                System.out.print(Integer.toHexString(b & 0xff)+"  ");

            }
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

여기 결과는 :

해결

  1. (INT의 a) Integer.toHexString이 개체에 의해 제공되는 방법 자바 API 정수 매개 변수에서의 16 비트 부호없는 정수의 문자열 표시를 리턴한다.
  2. 사용하는 이유 B & 0xff가?
    • (a를 INT) Integer.toHexString 그것은 int 형의 필수 파라미터이다.
    • 11111111 0xFF의 16 진수 표현이다.
    • 우리는 바이트 바이트 것을 알고, INT는 팔에 32 비트, 4 개의 바이트이다. 어떤 부호 비트가없는 경우, 우리는 직접 공을 채울 수 있습니다. & 0xff가 있으므로 부호 비트 있도록하는 것입니다.
    • 예를 들어 : -127 바이너리 11111111, 10000001, 비교 역 보완으로, 트랜스페린은 발견 할 것이다 129에 부호없는 숫자로 진수 형식으로 계속 16 진수 (81)이었다.

개요

우리가 볼 수있는 결과에 따르면,
문자열은 UTF-8 인코딩, 세 바이트 문자 바이트의 편지입니다.
GBK 문자열은 2 바이트 문자 바이트의 편지를 인코딩됩니다.

다른 코드의 경우에 표시 할 경우, 위의 코드를 복사 할 수 있으며, 문자열은 다른 코딩을 볼 수 있습니다.
참고 : 문자열 인코딩되지 않은 경우, 디폴트는 프로젝트의 인코딩.

도움이 기사는 요 ~ 같은 점에 초점을 기억하십시오
IT의 감정, 그들에게 배울 매일 푸시에 대한 기술 문서 : 내 공개 우려 번호에 오신 것을 환영합니다.

추천

출처www.cnblogs.com/zhixie/p/11968710.html