Determine o comprimento de uma sequência de bytes UTF-8, considerando o primeiro byte. A tabela a seguir mostra quais intervalos são mapeados para cada comprimento possível:
Range Length
--------- ------
0x00-0x7F 1
0xC2-0xDF 2
0xE0-0xEF 3
0xF0-0xF4 4
Observações sobre lacunas na tabela: 0x80-0xBF são bytes de continuação, 0xC0-0xC1 iniciaria uma sequência inválida excessiva; 0xF5-0xFF resultaria em um ponto de código além do máximo do Unicode.
Escreva um programa ou função que aceite o primeiro byte de uma sequência de bytes UTF-8 como entrada e saída ou retorne o comprimento da sequência. A E / S é flexível. Por exemplo, a entrada pode ser um número, um caractere de 8 bits ou uma cadeia de um caractere. Você pode assumir que o primeiro byte faz parte de uma sequência válida e se enquadra em um dos intervalos acima.
Isso é código de golfe. A resposta mais curta em bytes vence.
Casos de teste
0x00 => 1
0x41 => 1
0x7F => 1
0xC2 => 2
0xDF => 2
0xE0 => 3
0xEF => 3
0xF0 => 4
0xF4 => 4