首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

VC Binary 文件 BYTE的读写解决方案

2012-06-19 
VC Binary 文件 BYTE的读写需要在VC里将一个binary的文件读到BYTE Ref[256] 里面C/C++ codeifstream myFil

VC Binary 文件 BYTE的读写
需要在VC里将一个binary的文件读到 

BYTE Ref[256] 里面

C/C++ code
ifstream myFile;myFile.open("Dell.sv",ios::in|ios::binary);myFile.Read()..... 只可以是 char的形式
,

网上找到一段类似的代码,用于WORD的
C/C++ code
istream& read_word( istream& ins, Word& value )  {  for (unsigned size = 0, value = 0; size < sizeof( Word ); ++size)    value |= ins.get() << (8 * size);  return ins;  }


改成了 BYTE
C/C++ code
istream& read_BYTE( istream& ins, BYTE& value ){   for (unsigned size = 0, value = 0; size < sizeof(BYTE); ++size)   value |= ins.get() << (4 * size);   return ins; }


C/C++ code
ifstream myFile;    myFile.open("Dell.sv",ios::in|ios::binary);    cout<<"File Name is :"<<FileName<<endl;        for (int i=0;i<=255;i++)    {                read_BYTE(myFile,Ref[i]);    }            cout<<"Loading complete"<<endl;


结果读不到,不知道是不是 ifstream 和 istream 转换的问题,如果是应该怎么做呢? 

此外 binary的输出 以前都是 
C/C++ code
printf("%X",..); C++里应该怎么做?


初学者 还望各位前辈多多指教

多谢了。

[解决办法]
BYTE 就是unsigned char
应该直接myFile >> Ref;
就能读了吧

printf("%x") 是转成16进制输出
printf("%x\n", 11);
cout << hex << 11 << endl;
[解决办法]
C/C++ code
#include <iostream>#include <fstream>#include <string>using namespace std;void main(){         ifstream infile("E:\\1.txt",ios::in);//这里改下第一个参数即可    if(!infile)    {        cout<<"open error!"<<endl;        exit(1);    }        char buf[256];     char strall[1000] = {0};    while(infile.getline(buf,256))     {         printf("%s\n",buf);//buf里是每行的值        strcat(strall, buf);        printf("%s\n",strall);//这里是全部文件的    }     system("pause");     } 

热点排行