我正在尝试使用C#读取二进制文件的内容。考虑一个可以包含特定于应用程序的文件的应用程序,这意味着用户只能使用此应用程序打开这些文件。应用程序可能不提供对用户的完全访问权限,例如,某个用户可能被授予只读访问权限。假设我想允许某个用户打开与我的应用程序关联的文件,并允许用户编辑该文件。我尝试过以下方法:
// Read the file into <bits>
var fs = new FileStream(@"c:\temp\test.appx", FileMode.Open);
var len = (int)fs.Length;
var bits = new byte[len];
fs.Read(bits, 0, len);
// Dump 16 bytes per line
for (int ix = 0; ix < len; ix += 16)
{
var cnt = Math.Min(16, len - ix);
var line = new byte[cnt];
Array.Copy(bits, ix, line, 0, cnt);
// Write address + hex + ascii
Console.Write("{0:X6} ", ix);
Console.Write(BitConverter.ToString(line));
Console.Write(" ");
// Convert non-ascii characters to .
for (int jx = 0; jx < cnt; ++jx)
if (line[jx] < 0x20 || line[jx] > 0x7f) line[jx] = (byte)'.';
Console.WriteLine(Encoding.ASCII.GetString(line));
}
但是,我无法从特定于应用程序的二进制文件中读取数据。有没有其他方法可以阅读完整的文件内容?
我更新了我的问题:
dÿþÿ5C
: \ U S E R S \
V S T E C H N.
O S \ D E S K T.
O P \ T R A I N.
我N G \ R A W \
1 \ S E C - 3 5
。 X P R ÿÿ
CProfileÿþÿ
²çÂu°
º£吗? €AA
:
:§èH。
ÿ¡!AAD“ÛùÞ.À
€AÀZd;ßOíÀTã¥>
À-À€AÀWW2
Ä1ÀÚ¬ú\ me +À
€AÀHPüs×埃塔
¤®) - AÀÄBi
Þ1À®¶bÙý'À
€AA°COE(MA0»”
U&amp;ÀAÀ¿} 8
G“ÀƒÀÊ¡E¶$ A
€AÀÁÊ¡E¶sÀNÑ“\
þ##À€Àd]ÜF
我能够阅读一些人类可读格式的文本,而且我不能保留文本,就像损坏的数据一样。
答案 0 :(得分:0)
快速且非常脏的版本。我用一个小的二进制文件做了这个,它工作得很好。
var file = File.ReadAllBytes(fileName);
//Your byte array stuff, turn it from Binary to Byte array into memory aka byteArray
... //MORE STATEMENTS ETC....
//Reads your byteArray as a readable txt File that will allow them to read it accordingly in ENGLISH.
string result = System.Text.Encoding.UTF8.GetString(byteArray)