PDA

View Full Version : چاپ یک buffer به Hex



ICEMAN
پنج شنبه 23 اسفند 1386, 12:53 عصر
سلام ...
یه buffer داریم از نوع char !
حالا داخلش هرچیزی میتونه باشه یه رشته که به NULL ختم میشه یا یه فایل که Open شده و به EOF ختم میشه ,چطور میشه مقدارش و به HEX در خروجی چاپ کرد .

حالا خروجی یا فایل یا console ممنون

Nima_NF
پنج شنبه 23 اسفند 1386, 14:12 عصر
اگر منظورتان تبدیل مقدار عددی یک char به HEX هست ، اول کارکتر را به به مقدار عددی تبدیل کنید و سپس از تابع printf یا توابع مشابه آن استفاده کنید:



printf( "Hex: %Xh C hex: 0x%x Octal: %o\n",
(int)yourchar , (int)yourchar, (int)yourchar);

ICEMAN
پنج شنبه 23 اسفند 1386, 15:15 عصر
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
ifstream inFile;
inFile.open( "test.dat" ,ios:: in | ios:: binary );
inFile.seekg( ios::end );

int length= inFile.tellg();
cout <<"Length of some.dat is: " <<length <<endl;
inFile.seekg( 0, ios::beg );

char *line;
line= new char[ length ];
inFile.read( line, length );
inFile.seekg( ios:: beg );

cout <<showbase;
for ( int i = 0; line[ i ] != EOF; i++ )
cout <<hex <<int( line[ i ] ) <<' ';

cout <<endl;
return 0;
}

سلام ...
یه کم کار کردم و به جواب شما رسیدم ولی نتیجه یی که گرفتم اونی نبود که توی Hex Editor نمایش میداد !
(البته با یه رشته از char مشکلی ندارم ولی برای خروجی یه فایل مشکل دارم)


Length of some.dat is: 2
0x4d 0x5a 0 0 0 0 0 0 0x2 0 0x2 0 0xffffffdd 0x1 0x8 0 0xfffffff1 0x3f 0x3d 0 0
0 0 0 0x9 0 0x2 0 0xffffffd3 0x1 0xc 0 0x3c 0 0 0 0xffffff80 0x9 0x41 0 0xffffff
a0 0xffffffd0 0x40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0