ASCII 확장 txt 파일이 있는데이 파일을 바이트 배열로 변환해야합니다. 문제는 Null char 및 space가 동일한 0x20 값으로 디코딩된다는 것입니다. 이 두 사례를 어떻게 구분할 수 있습니까? 이 파일은 직렬 로거 하드웨어에 의해 작성되어 직렬 포트에서 교환되는 바이트를 ASCII 확장 txt 파일에 저장합니다.ASCII 8 비트 인코딩 파일의 널 및 공백 문자 디코딩
class Program
{
static void Main(string[] args)
{
Encoding enc = Encoding.GetEncoding(1252);
byte[] byteArray;
string filePath = "C:\\Log.txt";
if (File.Exists(filePath))
{
StreamReader sr = new StreamReader(filePath, enc);
string fileString = sr.ReadToEnd();
if (fileString.Length > 0)
{
byteArray = enc.GetBytes(fileString);
for (int i = 0; i < fileString.Length; i++)
{
Console.WriteLine(fileString[i] + byteArray[i].ToString("X2"));
}
}
else
{
Console.WriteLine("File is empty");
}
}
else {
Console.WriteLine("File " + filePath +" does not exit");
}
Console.WriteLine("Press any key to stop...");
Console.ReadKey();
}
}
문제가 될 수있는 짧지만 완전한 * 프로그램을 제공 할 수 있습니까? (콘솔 앱이 이상적입니다. 프로그램의 바이트를 하드 코딩하는 것이 적절할 것입니다.) –
전체 콘솔 프로그램을 포함하도록 원래 질문을 수정했습니다. –
하지만 여전히 파일을 여는 중입니다. 즉, 해당 파일을 가지고 있지 않으면 파일을 재생할 수 없습니다. 그래서 바이트를 하드 코딩하는 것이 좋습니다. "ASCII 확장"은 단일 인코딩 이름이 아닙니다. ASCII의 8 비트 확장 인 인코딩이 많이 있습니다. 이게 실제로 CP-1252를 사용하는 것이 확실합니까? 또한 파일의 * 실제 * 바이트를 보려면 바이트를 텍스트로 디코딩 한 다음 바이트로 다시 인코딩하는 대신 스트림을 사용하는 것이 좋습니다. –