文字列と 16進数

テクニカル・ノート 76992

アーキテクチャ:

All

コンポーネント:

compiler

更新日:

2018/08/25 13:54

はじめに

例: 以下のように、定数文字列に16進ASCII値の\x34を使用して'4'という文字を記述したい場合があります。

const char test[] = "123\x3456";

このとき期待する結果は、文字列"123456"です。

この場合、文字を表すのに\x34と\x345のどちらが使用されるか分からないため、ANSIでは、この場合の動作は「不定」と分類されています。当社の製品では、この件に関し厳密に実装されていないため、このような場合の動作は、コンパイラやバージョンによって大きく異なる可能性があります。

一つの解決方法としては、以下のように記述することです。

const char test[] = '1','2','3','\x34','5','6','\0'};

しかし、文字列が長い場合、すべての文字を1つずつ記述するのは面倒です。

より優れた解決方法は、以下のように文字列を連結することです。

const char test[] = "123\x34""56";

または、以下のようにします。

const char test2[] = "123""\x34""56";

ワイド文字の場合の解決方法は以下のようになります。

const wchar_t test3[] = L"123\x34"L"56";

または、以下のようにします。

const wchar_t test4[] = L"123"L"\x34"L"56";

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。