Convertendo de byte [] para string
Eu tenho o seguinte código:
using (BinaryReader br = new BinaryReader(
File.Open(FILE_PATH, FileMode.Open, FileAccess.ReadWrite)))
{
int pos = 0;
int length = (int) br.BaseStream.Length;
while (pos < length)
{
b[pos] = br.ReadByte();
pos++;
}
pos = 0;
while (pos < length)
{
Console.WriteLine(Convert.ToString(b[pos]));
pos++;
}
}
O FILE_PATH é uma cadeia const que contém o caminho para o arquivo binário que está sendo lido. O arquivo binário é uma mistura de inteiros e caracteres. Os inteiros são 1 bytes cada e cada caractere é gravado no arquivo como 2 bytes.
Por exemplo, o arquivo tem os seguintes dados:
Como você está olhando para você?
Por favor note: Cada número inteiro é associado com a seqüência de caracteres que o segue. Então 1 está associado com "OLÁ COMO VOCÊ ESTÁ" e 45 com "VOCÊ ESTÁ OLHANDO ÓTIMO" e assim por diante.
Agora o binário está escrito (eu não sei por que, mas tenho que viver com isso) tal que '1' levará apenas 1 byte enquanto 'H' (e outros caracteres) tomam 2 bytes cada.
Então, aqui está o que o arquivo realmente contém:
0100480045 .. e assim por diante, a repartição:
01 é o primeiro byte para o inteiro 1 0048 são os 2 bytes para 'H' (H é 48 em Hex) 0045 são os 2 bytes para 'E' (E = 0x45)
e assim por diante .. Eu quero meu console para imprimir formato legível humano fora deste arquivo: Que eu quero imprimir "1 Olá, como você está" e, em seguida, "45 você está olhando grande" e assim por diante ...
O que estou fazendo correto? Existe uma maneira mais fácil / eficiente? Minha linha Console.WriteLine (Convert.ToString (b [pos])); faz nada, mas imprime o valor inteiro e não o caractere real que eu quero. Está tudo bem para números inteiros no arquivo, mas como eu leio os caracteres?
Qualquer ajuda seria muito apreciada. obrigado