2017-04-10 5 views
0

유니 코드 문자의 16 진수 값을 가져와 정수로 변환 한 다음 바이트 배열로 변환 한 다음 UTF-8 문자열로 변환하는 프로그램에서 작업하고 있습니다. 예를 들어 16 진수 값 E2 82 AC (€ 기호)가 십진수로 14 844 588이라는 사실 이외에 모두 괜찮습니다. 그러나 아래 제공된 웹 페이지에서 코드 포인트 값을 보면 226입니다 130 172는 큰 차이점이 있습니다. 10 진수 불일치로 UTF8 16 진수 코드 포인트

http://utf8-chartable.de/unicode-utf8-table.pl?start=8320&number=128&names=-

당신이 그들의 진수로 값을 정렬 할 경우

, 그들은 단지 진수로 육각 변환 아닙니다. 분명히 나는 ​​내가했던 줄 알았을뿐만 아니라 인코딩을 이해하지 못한다. 226 130 172 14 844 대신 588

E2 82 AC 맵 왜 차이가 있습니까?

미리 감사드립니다.

+1

가변 길이 바이트 시퀀스를 숫자로 직접 해석 할 수 없습니다. 0x00E282AC은 실제로 14844588이지만 이것은 단지 우연입니다. – tripleee

+0

16 진수의 바이트 시퀀스 '0xE2'' 0x82'' 0xAC'는 십진법으로'226''''''''''''''''''''''''''''''''로 구분됩니다. 단일 숫자'14,844,588' (쉼표는 질문에 공백으로 표시됩니다)은 16 진수의'0xE282AC'입니다. 십진법 숫자는 226.130,172가 아니라'226''''''''''''172''입니다. 당신은 두 가지 다른 것을 비교하고 있습니다. 공백으로 인해 혼란 스러울 수 있습니다. –

답변

2

나는 "16 진수 값 E2 82 AC (기호)가 십진법으로 14 844 588"이라고 잘못 생각합니다.

어떻게 16 진수 값 E2, 82AC을 해석 했습니까?

헥스 E2 = 헥스 E * 16 + 헥사 2 = 14 * 16 + 2 = 226

헥스 82 = 헥스 8 * 16 + 헥사 2 = 8 * 16 = 130 + 2

헥스 AC = 헥스 A * 16 + 헥사 C = 10 * 16 + 12 = 172

그래서, 헥스 값 E2 82 AC (€ 심볼) 십진수 130 172 226 사실이다.