16進文字列リテラルで何ができますか? [複製] -- java フィールド と hex フィールド 関連 問題

What can I do with a hex String literal? [duplicate]












5
vote

問題

日本語

私はJavaを学んでいます、そして私は16進文字列リテラルについての本の章にいます。この形式で16進文字列リテラルを作成できることを教えてください。 " uxxxx"。だから私はこれを試してみました:

<事前> <コード> char c = 'u0010'; int x = c; System.out.println(x); // prints 16.

最初に、次の16進文字列リテラルにコンパイルエラーが発生するのはなぜですか?私は10進数は「a」が10進数で10に等しいと予想していました。

<事前> <コード> char c = 'u000a';

次のエラーを返します。

<事前> <コード> ..srcpkgsmainMain.java:360: error: illegal line end in character literal char c = 'u000a';

次に、私の初心者のJavaのステータスのために、私は現在16進文字列リテラルを使用するものを理解することはできません。なぜ私は1つを使いたいですか?誰かが「現実世界」の使用例を私に提供してください。たくさんありがとう。

英語

I'm learning Java, and I'm on a book chapter about hex String literals. It tells me that I can create a hex String literal in this format: "uxxxx". So I tried this:

char c = 'u0010'; int x = c; System.out.println(x);  // prints 16. 

Firstly, why does the following hex String literal cause a compilation error? I was expecting that 'a' in hex would equal 10 in decimal.

char c = 'u000a'; 

Returns the following error:

..srcpkgsmainMain.java:360: error: illegal line end in character literal                 char c = 'u000a'; 

Secondly, because of my novice Java status, I'm currently not able to appreciate what hex String literals are used for. Why would I want to use one? Can someone please provide me with a "real world" example of their use? Thanks a lot.

</div
     
 
 

回答リスト

4
 
vote
vote
ベストアンサー
 

すでに述べたように、Unicode ESCAPESは実際に交換用のコンパイル中に処理された:

Unicode Escapesは非常に早く処理されるため、値がlinefeed(lf)の文字リテラルに ' u000a'を書き込むのは正しくありません。 Unicode Escape U000aは、翻訳手順1(§3.3)の実際の行長に変換され、LINEFEEDはステップ2(§3.4)ではLineTerminatorになり、文字リテラルはステップ3では無効です。代わりに、使用する必要があります。エスケープシーケンス ' N'(§3.10.6)。同様に、その値がキャリッジリターン(CR)の文字リテラルに対して ' U000D'を書き込むのは正しくありません。代わりに、 ' r'を使用してください。

Unicode Escapesのこの側面は、文字リテラルに限られないだけではありません。たとえば、次のように印刷されます。 "Hello World":

<事前> <コード> // u000A System.out.println("hello world");

エスケープを超えて特殊文字を取得するもう1つの方法は、整数リテラルを使用することです。

<事前> <コード> static final char NUL = 0x0000;

その有用性については、特に特殊文字をコピーして貼り付けるか、あるキーボードの組み合わせで入力する必要があります。もう一つの理由は、特定の文字が適切な視覚的表現を持っていないことです。この例としては、NULL、ESCAPE、BACKSPACE、およびDELETEです。また、コード点7、ベル文字は実際には印刷されたときにビープ音を出すためのコンピュータの命令です。

 

As noted already, Unicode escapes are actually processed during compilation as a replacement:

Because Unicode escapes are processed very early, it is not correct to write 'u000a' for a character literal whose value is linefeed (LF); the Unicode escape u000a is transformed into an actual linefeed in translation step 1 (§3.3) and the linefeed becomes a LineTerminator in step 2 (§3.4), and so the character literal is not valid in step 3. Instead, one should use the escape sequence ' ' (§3.10.6). Similarly, it is not correct to write 'u000d' for a character literal whose value is carriage return (CR). Instead, use ' '.

This aspect of Unicode escapes is not just limited to character literals. For example, the following will print "hello world":

// u000A System.out.println("hello world"); 

Another way to get special characters beyond an escape is to use an integer literal:

static final char NUL = 0x0000; 

As for their usefulness, for one, because otherwise you'd have to copy and paste special characters or type them in with some keyboard combination. The other reason is that certain characters don't have a proper visual representation. Examples of this are null, escape, backspace and delete. Also code point 7, the bell character, which is actually an instruction for the computer to emit a beep when it gets printed.

</div
 
 
7
 
vote

コンパイラがエラーを与えるという事実は、コンパイラが<コード> u000a を<コード> CR

に解析するためです。 <事前> <コード> char A = 'u000A';

が...

<事前> <コード> char A =' ';

はコンパイル時エラーをもたらす。このエラーを回避するには、必ず特殊エスケープ文字<コード> ' ' (ラインフィード)と<コード> ' ' (キャリッジリターン)を使用してください。

 

The fact that the compiler gives an error is because the compiler will parse the u000a to CR

char A = 'u000A'; 

therefore becomes...

char A =' '; 

which results in a compile-time error. To avoid this error, always use the special escape characters ' ' (line feed) and ' ' (carriage return).

</div
 
 
         
         
0
 
vote

JavaのCHARは2バイトであるため、Unicode文字をcharで印刷できます。 そのため、Unicode文字コードを知っていれば、CHARのHexリテラルとして保存でき、他の言語文字を使用できます。

このリンクをご覧ください。 http://voices.yahoo.com/how-print-unicode. -Characters-Java-12507717.html

Hexリテラルの使用を理解するための

 

Char in Java is of 2 bytes and hence you can print Unicode characters using char. So if you know unicode character code, then you can store it as hex literal in char and you can use the other language characters.

You can visit this link: http://voices.yahoo.com/how-print-unicode-characters-java-12507717.html

For understanding the use of hex literals

</div
 
 
     
     

関連する質問

24  intをCで2バイトの16進数の値に変換する  ( Converting an int to a 2 byte hex value in c ) 
INTをCHARアレイに格納するために2バイトの16進値をCに変換する必要があります。この方法をどうやって行えますか? ...

-5  HEX値表現とEndianessの説明  ( Explanation of hex value representation and endianess ) 
スクリプトに取り組んでいて、基本的にサンプルデータをバイナリブロブとして出力していました。 私はソフトウェアの分野の新しいインターンであり、漠然とエンディアネスのアイデアを覚えています。 ビッグエンディアンのための最上位ビットが上部で始まり、メモリブロックを下...

9  16進数のUnicode文字をその視覚表現に変換します  ( Convert hexadecimal unicode character into its visual representation ) 
Unicode文字を16進形式から1文字に変換するC#プログラムを作成しようとしています。これは私のコードです: これは機能します: <事前> <コード> char e = Convert.ToChar("u0066"); しかし、これはうまくいきませ...

40  16進数文字列を整数に解析するNumberFormateXceptionをスローしますか?  ( Parsing a hexadecimal string to an integer throws a numberformatexception ) 
だから、Javaでは、このような整数を宣言する方法を知っています。 <事前> <コード> int hex = 0x00ff00; 私はあなたがそのプロセスを逆転させることができるべきだと思いました。私はこのコードを持っています: <事前> <コード> In...

12  3桁の六角カラーコードに変換してください  ( Convert to 3 digit hex color code ) 
CSSで3桁の16進数の色値を長期間使用しています。<コード> TextBox2 、<コード>、<コード>、<コード> public class SomeValidationRule : ValidationRule { public overrid...

2  リテラルとしてマジックデバッグ値(0xDeadBeefなど)を使用する危険性は正確に何ですか?  ( What exactly is the danger of using magic debug values such as 0xdeadbeef as l ) 
ハードコードされたヘクスリテラルポインタを使用することは災害です: <事前> <コード> int *i = 0xDEADBEEF; // god knows if that location is available しかしながら、16進文字を変数値?とし...

65  C#/ vb.netでのT-SQLキャストをデコードする  ( Decoding t sql cast in c vb net ) 
最近、当社のサイトは、 asprox botnet SQL Injection 攻撃。詳細に入ることなく、攻撃は t-sql コマンドをエンコードすることによってSQLコードを実行しようとします。 ASCIIエンコードされたバイナリ文字列。それはこのような...

0  Javaで16進文字列を暗号化します  ( Encrypt a hex string in java ) 
私の問題についての提案を求めたいと思います。 16進数文字列を暗号化する必要があります。サーバーでは機能しないため、Javaの組み込み関数を使用しないでください。要するに、私はアルゴリズムまたはメッセージを暗号化するための任意の手段をハードコードする必要があり...

3  ビットを検索してそれらを交換することを可能にする16進エディタ  ( Hex editor that allows me to search bits and replace them ) 
私は斧を見つけました、それは非常にうまくいきますが、それは無料ではなく、私はウェブサイトにアクセスできない(私はそれを購入したでしょう)。私は良いと無料の六角編集者が見つかりません、そして、その機能を本当に持っています。 ...

4  Pythonの怒りの不正なことと同等のC#がありますか? [複製]  ( Is there a c sharp equivalent to pythons unhexlify ) 
この質問はすでにここで回答を持っています 閉じた 11年前> 可能な重複: 16進数をバイト配列に変換する方法? C#でPython互換メソッドを検索して、16進数をバイナリに変換します。私はこれを行うことによってPytho...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有