int型の数値を16進数表記の文字列に変換する

test121.gif
int型の数値を16進数の文字列に変換するには、従来からのC/C++ではitoa関数もしくはsprintf関数を利用した。しかしWindowsプログラミングではitoa関数などは使わない方がいい。

もちろんitoa関数も使えるが文字列バッファーサイズを指定できるためセキュリティが若干高い_itoa_s系の関数を利用した方がいい。さらに言うと実際のプログラミングでは速度的には劣るがバッファーのことを考える必要がなくコーディングが楽なCString型の文字列を利用する変換がいいだろう。

_itoa_s系の関数の場合は第4引数に「16」を指定することで16進数の文字列を取得できる。



bool	Test()
{
	////////////////////////////////
	//	int型数値を16進数文字列に変換
	//
	{
		//char型文字列に変換
		int		nValue = 123;
		char	pszText[256];

		//itoaや_itoaは利用しない方がいい!代わりに_itoa_sを使う
		::_itoa_s(nValue,pszText,256 * sizeof(char),16);

		::MessageBoxA(NULL,pszText,"",MB_OK);
	}
	{
		//wchar_t型文字列に変換
		int		nValue = 123;
		wchar_t	pszText[256];

		//_itowは利用しない方がいい!代わりに_itow_sを使う
		::_itow_s(nValue,pszText,256 * sizeof(wchar_t),16);

		::MessageBoxW(NULL,pszText,L"",MB_OK);
	}
	{
		//TCHAR型文字列に変換
		int		nValue = 123;
		TCHAR	pszText[256];

		//_itotは利用しない方がいい!代わりに_itot_sを使う
		::_itot_s(nValue,pszText,256 * sizeof(TCHAR),16);

		::MessageBox(NULL,pszText,_T(""),MB_OK);
	}
	{
		//CString型文字列に変換
		int		nValue = 123;
		CString	strText;

		//小文字の16進数
		strText.Format(_T("%x"),nValue);
		::MessageBox(NULL,strText,_T(""),MB_OK);

		//大文字の16進数
		strText.Format(_T("%X"),nValue);
		::MessageBox(NULL,strText,_T(""),MB_OK);
	}

	return	true;
}


プロジェクトファイルをダウンロード


カテゴリー「文字列操作」 のエントリー