Intを16進数値に変換する必要があります。たとえば、これはint値です。
int_value = -13516;
16進数値に変換するには、次のようにします。
hex_value = Integer.toHexString(int_value);
私が得るべき値は:-34CC
(私はそれをポジティブにするべきかどうかわかりません)。
変換はそのように行うということです、私が得る値は:ffff cb34
この関数を使用してこの変換を行うことはできませんか?
ドキュメントには、_Integer.toHexString
_がint
の16進数表現を符号なしの値として返すと記載されています。
私はInteger.toString(value, 16)
があなたが望むものを達成すると信じています。
public static int convert(int n) {
return Integer.valueOf(String.valueOf(n), 16);
}
// in onstart:
Log.v("TAG", convert(20) + ""); // 32
Log.v("TAG", convert(54) + ""); // 84
String.format("#%06X", (0xFFFFFF & colorYellow));
出力:#FFC107
Integer.toHexStringとString.format( "%x")はどちらも符号をサポートしていません。この問題を解決するには、3項式を使用できます。
int int_value = -13516;
String hex_value = int_value < 0
? "-" + Integer.toHexString(-int_value)
: Integer.toHexString(int_value);
整数から16進数および16進数から整数への変換について、次のコードを実行します。
public class MainActivity extends Activity {
int number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
number = 678668;
Log.i("ACT", "Integer Number " + number);
/**
* Code for convert integer number to hex number. two mwthods.
*/
Log.i("ACT", String.format("#%x", number)); // use lower case x for
// lowercase hex
Log.i("ACT", "#" + Integer.toHexString(number));
/**
* Code for convert hex number to integer number
*/
String hex = Integer.toHexString(number).replace("/^#/", "");
int intValue = Integer.parseInt(hex, 16);
Log.i("ACT", "Integer Number " + intValue);
}
}
上記の答えがあなたに署名されたビットの正確な値を与えるとは思いません。たとえば、11の値は0Bですが、-11の値は-BではなくF5になります。2の補数がこれを解決するためにゲームに入るので、上記の答えを変更しました
int int_value = -11;
String hex_value = int_value < 0
? Integer.toHexString(int_value+65536) : Integer.toHexString(int_value);
String shortHexString = hex_value.substring(2);
ここで、65536は2 ^ 16です。期待どおりの結果が得られます。ハッピーコーディング:)