不管怎样,所有数字数据都存储在0和1中。我猜这是二进制数据的原理。
是否有方法或包可以显示文件/单exe程序的二进制代码,它实际上是如何以0/1格式存储的?
我会看到它: - 导入某个随机文件 - 将其转换为0/1格式 - 将1/0数据存储在txt(streamwriter / binarywriter)
中如果是,是否可以在任何.NET语言中使用(pref:c#)?
答案 0 :(得分:2)
基本上你只需要将其分为两个步骤:
var fileBytes = File.ReadAllBytes(someFileName);
第二步不那么简单,but still pretty easy:
var byteString = string.Concat(fileBytes.Select(x => Convert.ToString(x, 2).PadLeft(8, '0')))
这里的想法是你单独选择每个字节,将每个字节转换为二进制字符串(填充左边,使每个字符为8个字符,因为许多字节具有前导零),并将所有字节连接成单个字符串。 (部分提供@ xanatos'以下评论。)
答案 1 :(得分:1)
我认为这是你正在寻找的东西:
byte [] contents = File.ReadAllBytes(filePath);
StringBuilder builder = new StringBuilder();
for(int i = 0; i<contents .Length; i++)
{
builder.Append( Convert.ToString(contents[i], 2).PadLeft(8, '0') );
}
现在,您可以将builder
内容写入文本文件。
答案 2 :(得分:1)
这会传输转换,如果您有大量文件,则非常有用。
/usr/bin/env ruby
答案 3 :(得分:0)
您可以以二进制模式打开文件。没有测试它,但它应该工作:
BitArray GetBits(string fuleSrc)
{
byte[] bytesFile;
using (FileStream file = new FileStream(fuleSrc, FileMode.Open, FileAccess.Read))
{
bytesFile = new byte[file.Length];
file.Read(bytes, 0, (int)file.Length);
}
return new BitArray(bytesFile);
}
答案 4 :(得分:0)
使用FileStream
,StreamWriter
,StringBuilder
和Convert
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
using (FileStream fs = new FileStream(InputFILEPATH, FileMode.Open))
{
while (fs.Position != fs.Length)
{
sb.Append(Convert.ToString(fs.ReadByte(),2));
}
}
using (StreamWriter stw = new StreamWriter(File.Open(OutputFILEPATH,FileMode.OpenOrCreate)))
{
stw.WriteLine(sb.ToString());
}
Console.ReadKey();
}