C#把一个exe文件读取出来并转换为16进制存储


 FileStream fs = new FileStream("C:\\testdds.exe", FileMode.Open, FileAccess.Read);
            int fileLength = Convert.ToInt32(fs.Length);
            //得到对像大小
            byte[] fileByteArray = new byte[fileLength];
            //声明一个byte数组
            BinaryReader br = new BinaryReader(fs);
            //声明一个读取二进流的BinaryReader对像
            for (int i = 0; i < fileLength; i++)
            {//循环数组
                br.Read(fileByteArray, 0, fileLength);
                //将数据读取出来放在数组中
            }
            string linshi="";
            for (int i = 0; i < fileByteArray.Length; i++)
            {
                int b = fileByteArray[i];
                string bb = Convert.ToString(b, 16);
                linshi = linshi + bb;
            }

linshi的确被转换成正确的16进制

但我发现当中的00没有被加载到linshi变量中,然后我将linshi变量遍历变成byte[]数组写出的文件也跟原来的文件大小差了一点,并且无法打开。

那个00是不是跟什么对齐有关系?

请问这个问题怎么解决...

单独把Convert.ToString的结果打出来看

那个linshi里面不确实对照了么?就是那个00没有。

Convert.ToString 打印出来是十六禁止的数据,截图当中在c32 asm当中也对照了,确实正确。


但是我发现00的就不对照了,想知道是什么原因。。

记得以前书里哪里瞄到过cpu填充对其什么东西的。

我是自学的,不容易啊。

还在认为是00没了
你就没自己去测试过
Convert.ToString(77, 16); --> "4d"
Convert.ToString(90, 16); --> "5a"
Convert.ToString(144, 16); --> "90"
Convert.ToString(0, 16); --> "0"
Convert.ToString(3, 16); --> "3"
合起来就是4d5a9003
明白了么

4d5a9003....................这些占的字节与原来少四分之一 我感觉就是00没有进去的原因

Convert.ToString(0, 16); --> "0"
Convert.ToString(3, 16); --> "3"
这两个怎么处理啊?

C# 为了满足不同场合的需求,提供了很多方法供你选用

        static void Main(string[] args)
        {
            byte[] b = { 77, 90, 144, 0, 3 };
            Console.WriteLine(Convert.ToString(b[3], 16)); //0
            Console.WriteLine(b[3].ToString("x2")); //00
            Console.WriteLine(BitConverter.ToString(b)) //4D-5A-90-00-03;
        }

 

我来告诉你,那是为有的字节只有一位,比如0,或者3,你加一下判断,if(bb.Length ==  1){bb = "0" + bb;}这样就可www.9iBee.com以了,

           string str = null;
            for (int i = 0; i < fileByteArray.Length; i++)
            {
                int b = fileByteArray[i];
                str = string.Format("{0} {1:X02}", str, b);
            }
结果:4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 
有点久远了 看见的晚 希望对后来人有帮助

发布了74 篇原创文章 · 获赞 0 · 访问量 3062

猜你喜欢

转载自blog.csdn.net/netyou/article/details/104747996