VC++ 関連情報

サンプルコード

ダンプ結果を CString につめるサンプル

#code c++

#include <afx.h>
#define DUMP_LENGTH 16      // 1行に表示するバイト数

CString DumpHex2String (

   const char* pPos,   // [i] 走査開始位置
   const char* pEnd    // [i] 走査終了位置

) {

   CString strResult;
   CString strHex;
   
   for( int i = 0; i < DUMP_LENGTH; i++ )
   {
       if( (pPos + i) < pEnd )
       {
           strHex.Format( _T("%02X "), (unsigned char)*(pPos + i) );
       }
       else
       {
           strHex = _T("   ");
       }
       strResult += strHex;
   }
   
   return strResult;

}

CString DumpChr2String (

   const char* pPos,   // [i] 走査開始位置
   const char* pEnd    // [i] 走査終了位置

) {

   CString strResult;
   CString strChr;
   
   for( int i = 0; i < DUMP_LENGTH; i++ )
   {
       if( ( (pPos + i) < pEnd ) && !iscntrl( *(pPos + i) ) )
       {
           strChr.Format( _T("%c"), *(pPos + i) );
       }
       else
       {
           strChr = _T(" ");
       }
       strResult += strChr;
   }
   return strResult;

}

CString Dump2String( const char* p, size_t nSize ) {

   CString strResult;
   
   strResult += _T("ADDRESS  : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF\n");
   strResult += _T("---------+-----------------------------------------------------------------\n" );
   int nAddress = 0;
   const char* pPos = p;
   const char* pEnd = pPos + nSize - 1;
   int length = 0;
   CString strTmp;
   while( ( pPos += length ) < pEnd )
   {
       strTmp.Format( _T("%08X : "), nAddress );           // アドレス表示
       strResult += strTmp;
       length = pEnd - pPos;
       if( length >= DUMP_LENGTH )
       {
           length = DUMP_LENGTH;
       }
       strResult += DumpHex2String( pPos, pPos + length + 1 );    // Hex 表示
       strResult += DumpChr2String( pPos, pPos + length + 1 );   // Char表示 
       strResult += _T("\n");
       nAddress += DUMP_LENGTH;
   }
   return strResult;

}

int main( int argc, char* argv[] ) {

   char szData[] = _T("abc");
   CString strDump;
   strDump = Dump2String( szData, sizeof(szData) );
   _tprintf( _T("%s"), (LPCTSTR)strDump );
   
   return 0;

}

#end


添付ファイル: filedump2string.cpp 448件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-02-27 (土) 14:19:03 (5166d)