저는 현재 도서 신속 프로그래밍 언어 3.1을 사용하여 신속하게 학습하고 있습니다.신속하게, utf16 서로 게이트 쌍이 비트로 표현되는 방법
이 책에서는 swift의 String
및 Character
유형이 완전히 유니 코드 호환이며 각 문자는 21 비트 유니 코드 스칼라 값으로 표시됩니다. 각 문자는 utf8, 16, 32를 통해 볼 수 있습니다.
바이트 및 비트 수준에서 utf8 및 utf32가 어떻게 작동하는지 이해하지만 utf16이 비트 수준에서 어떻게 작동하는지 이해하는 데 문제가 있습니다.
코드 포인트가 16 비트에 맞을 수있는 문자의 경우 utf16은 문자를 16 비트 숫자로 나타 내기 만합니다. 그러나 16 비트 이상을 필요로하는 문자의 경우 두 개의 16 비트 블록이 사용됩니다 (서로 게이트라고 함).
그러나 두 개의 16 비트 블록이 비트 수준으로 어떻게 표시됩니까?
도움이되는 의견에 감사드립니다. 그래서 utf16 문자가 가질 수있는 최대 비트 수는 20 비트라고 추측하고 있습니까? 첫 번째 16 비트 블록에서 10 비트 및 두 번째 16 비트 블록에서 10 비트? 하지만 유니 코드 스칼라 값은 21 비트로 표시됩니다. 그렇다면 유니 코드 스칼라 값 (21 비트)으로 표현할 수있는 것을 utf16 (20 비트)로 표현할 수 없다는 뜻입니까? – Thor
@TonyStark : https://en.wikipedia.org/wiki/UTF-16#U.2B10000_to_U를 참조하십시오.2B10FFFF : 코드 포인트에서 0x010000을 뺀다. 0x000000..0x0FFFFF .... –
utf16이 20 비트 수로 표현되면 @MartinR, 유니 코드 스칼라 값 (코드 포인트 일 뿐이다)을 남겨둔다. 문자에 대한) 21 비트 숫자로 표현됩니다, 그것은 어떤 유니 코드 스칼라 값은 utf16로 표현할 수 없다는 뜻인가요? – Thor