O método GetString fez um "foreach" no buffer, decodificando cada byte de acordo com o UTF-8? E como veio em linhas separadas se usamos o Console.Write em vez do WriteLine?
O método GetString fez um "foreach" no buffer, decodificando cada byte de acordo com o UTF-8? E como veio em linhas separadas se usamos o Console.Write em vez do WriteLine?
Olá Fabrizio
Sim, o método GetString faz um "foreach" no buffer, decodificando cada byte de acordo com o UTF-8. Ele utiliza a classe UTF8Encoding
para fazer essa decodificação.
Quanto à sua pergunta sobre o uso do Console.Write
em vez do Console.WriteLine
, a diferença é que o Console.Write
não faz a quebra de linha automaticamente, enquanto o Console.WriteLine
faz. No entanto, mesmo utilizando o Console.Write
, o resultado mostra um cliente por linha porque a quebra de linha também é um caractere e o programa compreende isso durante a decodificação.
Por exemplo, se tivermos o seguinte código:
var utf8 = new UTF8Encoding();
var buffer = new byte[] { 72, 101, 108, 108, 111, 10, 87, 111, 114, 108, 100 };
var texto = utf8.GetString(buffer);
Console.Write(texto);
O resultado será:
Hello
World
Note que mesmo utilizando o Console.Write
, a quebra de linha é exibida corretamente.
Espero ter ajudado e bons estudos!