Memo/2004-07-05
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
*VC++ 関連情報
**サンプルコード
***ダンプ結果を CString につめるサンプル
#ref(dump2string.cpp);
#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)*(...
}
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 0...
strResult += _T("---------+--------------------------...
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 ...
strResult += DumpChr2String( pPos, pPos + length ...
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
終了行:
#contents
*VC++ 関連情報
**サンプルコード
***ダンプ結果を CString につめるサンプル
#ref(dump2string.cpp);
#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)*(...
}
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 0...
strResult += _T("---------+--------------------------...
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 ...
strResult += DumpChr2String( pPos, pPos + length ...
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
ページ名: