数値から文字列へ変換

```C
namespace
{
static void DumpToStr( LPWSTR buf, size_t bufLen, const void* data, size_t length ) noexcept
{
	static wchar_t const table_wn[][2] = {
		{ L'0', L'0' }, { L'0', L'1' }, { L'0', L'2' }, { L'0', L'3' }, { L'0', L'4' }, { L'0', L'5' }, { L'0', L'6' }, { L'0', L'7' }, { L'0', L'8' }, { L'0', L'9' }, { L'0', L'A' }, { L'0', L'B' }, { L'0', L'C' }, { L'0', L'D' }, { L'0', L'E' }, { L'0', L'F' },
		{ L'1', L'0' }, { L'1', L'1' }, { L'1', L'2' }, { L'1', L'3' }, { L'1', L'4' }, { L'1', L'5' }, { L'1', L'6' }, { L'1', L'7' }, { L'1', L'8' }, { L'1', L'9' }, { L'1', L'A' }, { L'1', L'B' }, { L'1', L'C' }, { L'1', L'D' }, { L'1', L'E' }, { L'1', L'F' },
		{ L'2', L'0' }, { L'2', L'1' }, { L'2', L'2' }, { L'2', L'3' }, { L'2', L'4' }, { L'2', L'5' }, { L'2', L'6' }, { L'2', L'7' }, { L'2', L'8' }, { L'2', L'9' }, { L'2', L'A' }, { L'2', L'B' }, { L'2', L'C' }, { L'2', L'D' }, { L'2', L'E' }, { L'2', L'F' },
		{ L'3', L'0' }, { L'3', L'1' }, { L'3', L'2' }, { L'3', L'3' }, { L'3', L'4' }, { L'3', L'5' }, { L'3', L'6' }, { L'3', L'7' }, { L'3', L'8' }, { L'3', L'9' }, { L'3', L'A' }, { L'3', L'B' }, { L'3', L'C' }, { L'3', L'D' }, { L'3', L'E' }, { L'3', L'F' },
		{ L'4', L'0' }, { L'4', L'1' }, { L'4', L'2' }, { L'4', L'3' }, { L'4', L'4' }, { L'4', L'5' }, { L'4', L'6' }, { L'4', L'7' }, { L'4', L'8' }, { L'4', L'9' }, { L'4', L'A' }, { L'4', L'B' }, { L'4', L'C' }, { L'4', L'D' }, { L'4', L'E' }, { L'4', L'F' },
		{ L'5', L'0' }, { L'5', L'1' }, { L'5', L'2' }, { L'5', L'3' }, { L'5', L'4' }, { L'5', L'5' }, { L'5', L'6' }, { L'5', L'7' }, { L'5', L'8' }, { L'5', L'9' }, { L'5', L'A' }, { L'5', L'B' }, { L'5', L'C' }, { L'5', L'D' }, { L'5', L'E' }, { L'5', L'F' },
		{ L'6', L'0' }, { L'6', L'1' }, { L'6', L'2' }, { L'6', L'3' }, { L'6', L'4' }, { L'6', L'5' }, { L'6', L'6' }, { L'6', L'7' }, { L'6', L'8' }, { L'6', L'9' }, { L'6', L'A' }, { L'6', L'B' }, { L'6', L'C' }, { L'6', L'D' }, { L'6', L'E' }, { L'6', L'F' },
		{ L'7', L'0' }, { L'7', L'1' }, { L'7', L'2' }, { L'7', L'3' }, { L'7', L'4' }, { L'7', L'5' }, { L'7', L'6' }, { L'7', L'7' }, { L'7', L'8' }, { L'7', L'9' }, { L'7', L'A' }, { L'7', L'B' }, { L'7', L'C' }, { L'7', L'D' }, { L'7', L'E' }, { L'7', L'F' },
		{ L'8', L'0' }, { L'8', L'1' }, { L'8', L'2' }, { L'8', L'3' }, { L'8', L'4' }, { L'8', L'5' }, { L'8', L'6' }, { L'8', L'7' }, { L'8', L'8' }, { L'8', L'9' }, { L'8', L'A' }, { L'8', L'B' }, { L'8', L'C' }, { L'8', L'D' }, { L'8', L'E' }, { L'8', L'F' },
		{ L'9', L'0' }, { L'9', L'1' }, { L'9', L'2' }, { L'9', L'3' }, { L'9', L'4' }, { L'9', L'5' }, { L'9', L'6' }, { L'9', L'7' }, { L'9', L'8' }, { L'9', L'9' }, { L'9', L'A' }, { L'9', L'B' }, { L'9', L'C' }, { L'9', L'D' }, { L'9', L'E' }, { L'9', L'F' },
		{ L'A', L'0' }, { L'A', L'1' }, { L'A', L'2' }, { L'A', L'3' }, { L'A', L'4' }, { L'A', L'5' }, { L'A', L'6' }, { L'A', L'7' }, { L'A', L'8' }, { L'A', L'9' }, { L'A', L'A' }, { L'A', L'B' }, { L'A', L'C' }, { L'A', L'D' }, { L'A', L'E' }, { L'A', L'F' },
		{ L'B', L'0' }, { L'B', L'1' }, { L'B', L'2' }, { L'B', L'3' }, { L'B', L'4' }, { L'B', L'5' }, { L'B', L'6' }, { L'B', L'7' }, { L'B', L'8' }, { L'B', L'9' }, { L'B', L'A' }, { L'B', L'B' }, { L'B', L'C' }, { L'B', L'D' }, { L'B', L'E' }, { L'B', L'F' },
		{ L'C', L'0' }, { L'C', L'1' }, { L'C', L'2' }, { L'C', L'3' }, { L'C', L'4' }, { L'C', L'5' }, { L'C', L'6' }, { L'C', L'7' }, { L'C', L'8' }, { L'C', L'9' }, { L'C', L'A' }, { L'C', L'B' }, { L'C', L'C' }, { L'C', L'D' }, { L'C', L'E' }, { L'C', L'F' },
		{ L'D', L'0' }, { L'D', L'1' }, { L'D', L'2' }, { L'D', L'3' }, { L'D', L'4' }, { L'D', L'5' }, { L'D', L'6' }, { L'D', L'7' }, { L'D', L'8' }, { L'D', L'9' }, { L'D', L'A' }, { L'D', L'B' }, { L'D', L'C' }, { L'D', L'D' }, { L'D', L'E' }, { L'D', L'F' },
		{ L'E', L'0' }, { L'E', L'1' }, { L'E', L'2' }, { L'E', L'3' }, { L'E', L'4' }, { L'E', L'5' }, { L'E', L'6' }, { L'E', L'7' }, { L'E', L'8' }, { L'E', L'9' }, { L'E', L'A' }, { L'E', L'B' }, { L'E', L'C' }, { L'E', L'D' }, { L'E', L'E' }, { L'E', L'F' },
		{ L'F', L'0' }, { L'F', L'1' }, { L'F', L'2' }, { L'F', L'3' }, { L'F', L'4' }, { L'F', L'5' }, { L'F', L'6' }, { L'F', L'7' }, { L'F', L'8' }, { L'F', L'9' }, { L'F', L'A' }, { L'F', L'B' }, { L'F', L'C' }, { L'F', L'D' }, { L'F', L'E' }, { L'F', L'F' },
	};
	assert( bufLen >= ( 1 + ( length * 2 ) + ( length - 1 ) + 1 + 1 ) );
	buf[0] = L'[';
	if( length == 0 )
	{
		buf[1] = L']';
		buf[2] = L'\0';
		return;
	}

	for( size_t i = 0; i < length; i++ )
	{
		wmemcpy( &buf[1 + ( i * 3 )], table_wn[reinterpret_cast<const BYTE*>( data )[i]], 2 );
		buf[1 + ( i * 3 ) + 2] = L' ';
	}
	buf[1 + ( length * 3 ) - 1] = L']';
	buf[1 + ( length * 3 )] = L'\0';
}
template <size_t bufLen>
static void DumpToStr( WCHAR ( &buf )[bufLen], const void* data, size_t length ) noexcept
{
	DumpToStr( buf, bufLen, data, length );
}
static void AppendDumpToStr( LPWSTR buf, size_t bufLen, const void* data, size_t length ) noexcept
{
	size_t offset = wcslen( buf );
	if( bufLen > offset )
	{
		DumpToStr( buf + offset, bufLen - offset, data, length );
	}
}
} // namespace

WCHAR msg[ 64 ] = L"LOG";
AppendDumpToStr( msg, _countof( msg ), data, size );
```