0

16 = 0x10 というバイトを文字列に追加したいのですが、エスケープ シーケンスを使用して 1 行のコードで実行します。

String appendedString = new String('\16'+"String");

これは appendedString = 0x0E,0x74,0x72,0x69,0x6E,0x67 の 16 進表現になります。

次のように \2 を使用します。

String appendedString = new String('\2'+"String");

appendedString = 0x02,0x74,0x72,0x69,0x6E,0x67 の 16 進数表現で正常に動作します

\10 を使用:

String appendedString = new String('\10'+"String");

appendedString = 0x08,0x74,0x72,0x69,0x6E,0x67 の 16 進表現になります。

誰かが親切にこれを説明し、解決策を提案するかもしれません。ありがとう。

4

2 に答える 2

2

\10U + 0008を取得しているのは8進数であるためです。

10 進数を使用するエスケープ形式はないと思います。形式、またはサポートされている文字 (など)\uxxxxの特定のエスケープ シーケンスを使用することをお勧めします。したがって、2番目のケースでは使用できます-またはこの場合は単に使用します。まず、 を使用します。\r\n\u000a\n\u0010

エスケープ シーケンスの詳細については、JLS のセクション 3.10.6 を参照してください。

また、これらをバイトとして考えるのをやめることを強くお勧めします。これらは文字(または、本当に正確にしたい場合は UTF-16 コード単位) です。

于 2013-09-24T16:30:04.247 に答える
0

問題は、8 進エスケープを使用していることです。Java 言語仕様のセクション 3.10.6では、8 進エスケープを含むエスケープが定義されています。

OctalEscape: \ OctalDigit \ OctalDigit OctalDigit \ ZeroToThree OctalDigit OctalDigit

つまり、10 進数または16 進数\16の文字です。140x0E

文字は10 進数と 16 進数の\2ままです。2

文字\10810 進数または0x0816 進数です。

16 進エスケープを使用するには、JLS セクション 3.3で定義されている Unicode エスケープを使用します。

Unicodeエスケープ:

\ UnicodeMarker HexDigit HexDigit HexDigit HexDigit

ユニコードマーカー:

u
UnicodeMarker u

\u0016\u0002、など\u0010

于 2013-09-24T16:31:50.237 に答える