A学习的小菜鸟 发表于 2020-2-5 15:12

关于文件大小的疑惑

有一个题目,将记事本的.exe文件读取到内存,并返回读取后在内存中的地址,并且将内存中的数据存储到另一个文件中,(.exe格式),然后双击打开,看是否能够使用.
本人写出来这个代码,将记事本读到内存中,然后再将内存的数据在读取到文件中
代码如下
#include "stdafx.h"       
#include <stdlib.h>
#include <windows.h>
int main(int argc, char* argv[])
{
        unsigned int num=0;
        void* pf;
        FILE* p=fopen("C:\\Windows\\system32\\notepad.exe","rb");
        if (p==NULL)
        {
                printf("error!\n");
        }
        printf("ok!\n");
        fseek(p,0,SEEK_END);
        num=ftell(p);
        fseek(p,0,SEEK_SET);
        pf=malloc(num);
        if(pf==NULL)
        {
                printf("error!\n");
        }
        unsigned int n=fread(pf,num,1,p);
        fclose(p);
        printf("%x\n",pf);
        FILE* p1=fopen("c:\\note.exe","wb");
        if(p1==NULL)
        {
                printf("error!\n");
        }
        else
        {
                unsigned int ret=fwrite(pf,num,1,p1);
        }
        fclose(p1);
        free(pf);
        return 0;
}
问题是自己存盘后的大小和系统本身记事本的大小不一致,但是功能和其他都是一样的,大小不一样这是什么原因呢??求指教

我乃小明 发表于 2020-2-5 15:55

1T硬盘为例
厂商计算方式
1T=1,000G=1,000,000MB=1,000,000,000KB=1,000,000,000,000Byte(字节)
电脑计算方式
1,000,000,000,000字节=976,562,500KB≈953,674.316MB≈931.323GB

zhang20010713 发表于 2020-2-5 16:03

他们的计算方式是不同的,硬盘也是同理
页: [1]
查看完整版本: 关于文件大小的疑惑