57

私はなぜString.format()それがそのように振る舞うのかを理解しようとしています。

コンテキスト:システムプログラミングクラス、アセンブラの記述。

オブジェクトファイルには5文字の16進フィールドがあり、値から作成しています。

使用してみました:String.format("%05X", decInt);

これは、正の数(11-> 0000B)に対して意図したとおりに機能しますが、負の数(-1->FFFFFFFFの代わりにFFFFF)では失敗します。

最後の5文字の部分文字列を取得できると思いますが、それでも、なぜこのように動作するのかを理解したいと思います。

4

2 に答える 2

85

The width used in format is always a minimum width. In this case, instead of using sub string operations I would suggest:

  String.format("%05X", decInt & 0xFFFFF);
于 2012-03-07T22:50:34.783 に答える
14

フォーマット幅は、最小桁数を作成するためにのみ機能し、先行ゼロにのみ影響します。

サブストリングの代わりに、ビットマスクを使用できます。

String.format("%05X", decInt & 0x0FFFFF)

ちなみに、11-> 0000B0000Aあなたの質問で主張されているようではありません。

于 2012-03-07T22:53:16.140 に答える