문자 배열을 바이트 배열로 변환하는 몇 가지 코드가 있습니다 (중간 문자열을 만들지 않고 요구 사항입니다). 끝에 여분의 바이트. 다음은 문제를 설명하는 테스트 코드입니다.Java - 문자 배열을 바이트 배열로 변환 - 길이가 일치하지 않습니다.
String s = "TomJSawyer";
System.out.println("Original String length = " + s.length());
char[] caOrig = s.toCharArray();
System.out.println("Original Char Array Length = " + caOrig.length);
byte[] ba1 = Charset.forName("UTF-8").encode(CharBuffer.wrap(caOrig)).array();
System.out.println("byte array converted from char array length = " + ba1.length);
byte[] ba2 = s.toString().getBytes("UTF-8");
System.out.println("byte array converted from String length = " + ba2.length);
그리고 여기에는 Winodows의 jdk160_24에서 실행되는 출력이 나와 있습니다.
Original String length = 10
Original Char Array Length = 10
byte array converted from char array length = 11
byte array converted from String length = 10
Charset을 사용하여 char 배열에서 변환 한 결과 인 추가 바이트는 0입니다. 입력 문자열이 길어지면 바이트 배열 끝에 추가 된 0 바이트 수가 증가합니다. 이것이 인코딩과 관련이 있다고 생각하지만 UTF-8을 두 곳으로 지정했기 때문에 왜 그렇게 될지 모릅니다.
누구든지 내게 어떤 일이 일어나고 있는지 또는 올바른 방향으로 나를 가리키면 정말 고맙겠습니다. 미리 감사드립니다. 당신이 char[]
을 사용하지 않는 경우
StringBuffer sb = "TomJSawyer"; – MoMan
감사합니다. 불행히도 String.valueOf()는 내가 피하려고하는 중간 문자열을 생성합니다. – user2801442