這是我的問題,我想打開一個.jpg文件,並用逗號分隔每個字節作爲十進制數字(0-255),轉換爲另一個.txt文件。現在它應該能夠使用該txt文件再次構建.jpf文件。這是我試圖做到這一點。從二進制文件中逐個讀取字節
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
long x;
char *s;
ifstream ifs("image.jpg",ios::binary);
ifs.seekg(0,ios::end);
x=ifs.tellg();
ifs.seekg(0,ios::beg);
s=new char[x];
ifs.read(s,x);
ifs.close();
ofstream is("image.txt");
for(int i=0;i<x;i++){
is<<(unsigned int)s[i]<<",";
}
現在這個程序及牡丹image.txt與十進制數如下, 4294967295,4294967256,4294967295,4294967264,0,16,74,70,73,70,0,1,..... 。 這裏有些數字似乎是4字節長,s [i]只指一個字節,所以如何可以(int)s [i]返回一個大於255的數字。請有人可以幫助我.... this thanks ..
您正在讀取的字符不是從0到255的無符號數,而是從-128到+127的有符號數。當你投射到無符號整數時,負數會變成大數正數。嘗試使用無符號字符數組。 – 2012-07-11 14:55:01