18

エスケープ シーケンス文字列を 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進数の文字列を作成する別の方法があるかもしれません...

4

3 に答える 3

38

\xエスケープ シーケンスを避けるようにしてください。どこで止まるかはデータによって異なるため、読み取りが困難です。たとえば、これらの 2 つの文字列には、一目でどのくらいの違いがありますか?

"\x9Good compiler"
"\x9Bad compiler"

前者では、「\x9」はタブです。「G」は有効な 16 進文字ではないため、エスケープ シーケンスはそこで停止します。2 番目の文字列では、「\x9Bad」はすべてエスケープ シーケンスであり、ランダムな Unicode 文字と「コンパイラ」が残ります。

代わりに \u エスケープ シーケンスを使用することをお勧めします。

"\u0009Good compiler"
"\u0009Bad compiler"

(もちろん、使用するタブの場合です\tが、私の言いたいことがわかるといいのですが...)

もちろん、これは元の質問とは多少異なりますが、それはすでに回答されています:)

于 2008-11-12T15:51:47.023 に答える
22

文字列に 16 進数値を格納しません。

できますが、それは単なる文字列であり、実際にその値を読み取るには整数またはバイトにキャストする必要があります。

ただし、16 進数値をリテラルとして int または byte に割り当てることができます。

Byte value = 0x0FF;
int value = 0x1B;

したがって、16 進リテラルを文字列に渡すことは簡単に可能です。

string foo = String.Format("{0} hex test", 0x0BB);

これにより、この文字列「126 hex test」が作成されます。

しかし、それはあなたが望んでいたことではないと思いますか?

于 2008-11-12T14:35:43.447 に答える
5

16 進数の16 ビットUnicode 文字コードには、'\u' エスケープ コードがあります。

Console.WriteLine( "Look, I'm so happy : \u263A" );
于 2008-11-12T15:12:32.563 に答える