קריאת HEX ב C++
אני מנסה לקרוא קובץ בייט אחרי בייט ולעשות כמה חישובים על הבייטים. בכל אופן, יש לי בעיה בקליטה של המידע. ההמרה בין HEX ל DEC הולכת בסדר כשהספר הראשונה בבייט היא ספרה ולא אות, אבל במקום A4, שבדצימלי זה 164, אני מקבל ב cout תוצאה משונה: ffffffa4 שלפי המחשבון זה מספר עצום בלי פרופורציה וב cout זה מינוס 92. אני מנסה לקלוט כך:
אני מנסה לקרוא קובץ בייט אחרי בייט ולעשות כמה חישובים על הבייטים. בכל אופן, יש לי בעיה בקליטה של המידע. ההמרה בין HEX ל DEC הולכת בסדר כשהספר הראשונה בבייט היא ספרה ולא אות, אבל במקום A4, שבדצימלי זה 164, אני מקבל ב cout תוצאה משונה: ffffffa4 שלפי המחשבון זה מספר עצום בלי פרופורציה וב cout זה מינוס 92. אני מנסה לקלוט כך:
unsigned long i,size; long sum; char tmp1,tmp2; int itmp1,itmp2; ifstream file ("file.txt", ios::in|ios::binary|ios::ate);//A file created by a hex editor with 4 bytes. will have more once I get it working. size = file.tellg(); file.seekg (0, ios::beg); for(i=0,sum=0;i<size-1;i++){ file.seekg (i, ios::beg); file.read (&tmp1, 1); file.seekg (i+1, ios::beg); file.read (&tmp2, 1); itmp1=tmp1; itmp2=tmp2; cout.unsetf( ios::hex ); cout.setf( ios::dec ); cout<<itmp1<<'*'<<itmp2<<':'; cout.unsetf( ios::dec ); cout.setf( ios::hex ); cout<<itmp1<<'*'<<itmp2<<endl; sum+=itmp2*itmp1; } file.close();