我有一個ASCII擴展txt文件,我需要將其轉換爲字節數組。 問題是空字符和空格解碼具有相同的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嗎?還要注意,要查看文件中的* actual *字節,最好使用流,而不是將字節解碼爲文本,然後將它們重新編碼爲字節。 –