1

刚刚发现自己需要在 C# 应用程序中打开 *.COM 文件。*.COM 文件由 fasm 生成,汇编代码如下:

组织 100 小时

跳转开始

味精:分贝“嗨”,0Dh,0Ah,24h

开始: mov dx,味精

    mov     ah, 09h 
    int     21h         
    mov     ah, 0 
    int     16h

ret

当使用像 Sublime 这样的文本处理器打开时,它表示代码如下所示:

eb05 4869 0d0a 24ba 0201 b409 cd21 b400

cd16 c3

我试图用这样的代码在应用程序中打开这个文件

string COMtext = File.ReadAllText(filename,encoding);

byte[] info = new UTF8Encoding(true).GetBytes(COMtext); 

当检查MessageBox.Show(info[i].ToString("x2")); 它时,第一个字节是 EF,第二个是 BF(将 EB 分成两半),然后在第三位(BD)添加一个额外的字节。在此之后 - 一切都按计划进行了解析。4th:05, 5th:48 等等。我做错了什么,有什么方法可以在没有解决方法的情况下修复它(在这个阶段我还不清楚哪个,因为我不知道是否会有相同的行为)

4

1 回答 1

3

您需要将文件作为二进制流打开,而不是文本流。作为文本,它被编码为 Unicode 代理项。

File.OpenRead与字节数组一起使用。您也可以使用File.ReadAllBytes,但我不推荐它,因为大文件会导致OutOfMemoryException.

于 2013-05-22T04:15:27.220 回答