2016-04-29 11 views
0

私はstackexchangeにどこかにこのコードを発見し、それは素晴らしい作品。どのようにC++での六角char配列へのstd ::文字列を変換するには?

char *szData = new char[str_hex.size()+1] = "\x4d\x4d\x4d\x5a\x90\x00\x03\x00\x00\x00\x04\x00\x00\x00\xe0\x00\x00\x00\x0e\x1f\xba\x0e\x00\xb4\x09\xcd\x00\x00\x00\x00\x00\x00\x00\x00"; 

     system("pause"); 
     HANDLE hFile; 
     DWORD dwBytesWritten = 0; 
     TCHAR szPath[MAX_PATH] = "C:\\Users\\Jules\\Desktop\\halloskos.txt"; 

     hFile = CreateFile (szPath,    
          GENERIC_WRITE,   
          0,      
          NULL,     
          CREATE_NEW,    
          FILE_ATTRIBUTE_NORMAL, 
          NULL);    

     WriteFile(hFile,&hexCh,sizeof(hexCh)-1, &dwBytesWritten, NULL); 
     CloseHandle(hFile); 
     delete [] szData; 

はしかし、私は(:4d5a9000f4等...このように格納されている)テキストファイルからHEXデータを引き出したいです。 fstreamので
iは、文字列にテキストファイルの内容を変えることができますが、どのように私は、コード例に示す配列にこれを変換することができますか? (このようなので、char型の配列:\ x4d \ X5A \ X90 \ X00 \ XF4など...)
変換例:
から:

string str_hex = "4d5a9000f4"; 

へ:

char *ch_hex = new char[str_hex.size()+1] = "\x4d\x5a\x90\x00\xf4" 

ありがとうあなたの助け!

+4

に[同じ質問](http://stackoverflow.com/questions/3381614/c-convertがありますあります-string-TO-16進と、その逆/ 35599923)時 –

+0

読む2つの文字と[整数に変換(http://en.cppreference.com/w/cpp/string/basic_string/stol)? –

答えて

1

あなたは

を書く「\ x4d \ x4d \ x4d \ X5A \ X90 \ X00 \ X03 \ X00 \ X00 \ X00 \ X04 \ X00 \ X00 \ X00 \ xe0 \ X00 \ X00 \ X00による\ x0e \ X1F \ XBA \ x0e \ X00 \ XB4 \ x09の\ XCD \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00"

コンパイラがビンに進から変換を行います(CHAR char)をコンパイル時に返します。あなたが必要なもの

run-timeでビンにhex文字列を変換することです。 C++ convert hex string to signed integer

のような答えの多くはここではないintに変換しますが、char

関連する問題