質問
16進表記のエスケープシーケンス文字列を作成するにはどうすればよいですか。
例:
string s = "\x1A"; // this will create the hex-value 1A or dec-value 26
このように00〜FFの16進数で文字列を作成できるようにしたい(この例では1B)
string s = "\x" + "1B"; // Unrecognized escape sequence
16進文字列を作成する別の方法があるかもしれません...
解決
16進値を文字列に保存しません。
できますが、それは文字列であり、実際にその値を読み取るには整数またはバイトにキャストする必要があります。
16進値をリテラルとしてintまたはバイトに割り当てることができます:
Byte value = 0x0FF;
int value = 0x1B;
したがって、文字列に16進リテラルを簡単に渡すことができます:
string foo = String.Format("{0} hex test", 0x0BB);
この文字列「126 hex test」を作成します。
しかし、それはあなたが望んでいたとは思いませんか?
他のヒント
\ x
エスケープシーケンスは避けてください。停止する場所はデータによって異なるため、読みにくくなります。たとえば、これら2つの文字列の違いは一目でわかりますか?
"\x9Good compiler"
"\x9Bad compiler"
前者では、" \ x9" is tab-「G」は有効な16進文字ではないため、エスケープシーケンスはそこで停止します。 2番目の文字列の" \ x9Bad"はすべてエスケープシーケンスであり、ランダムなUnicode文字と"コンパイラ"。
代わりに\ uエスケープシーケンスを使用することをお勧めします。
"\u0009Good compiler"
"\u0009Bad compiler"
(もちろんタブの場合は \ t
を使用しますが、意味がわかることを期待しています...)
これはもちろん元の質問とは多少異なりますが、すでに回答済みです:)
16進数の 16ビットユニコード文字コードには「\ u」エスケープコードがあります。
Console.WriteLine( "Look, I'm so happy : \u263A" );
所属していません StackOverflow