3

バイナリ文字列を 16 進文字列に変換する必要がありますが、問題があります。この方法で、バイナリ文字列を 16 進文字列に変換しました。

public static String binaryToHex(String bin){
   return Long.toHexString(Long.parseLong(bin,2));
}

大丈夫です!しかし、文字列の左側にあるゼロを失います。元:

メソッドはこれを返します:123456789ABCDEF、しかし私はこれを返したいです:

00000123456789ABCDEF

4

3 に答える 3

8

代わりにLong.toHexStringLong.parseLong値を解析してからString.format、目的の幅 (例では 21) で値を出力します。


public static String binaryToHex(String bin) {
   return String.format("%21X", Long.parseLong(bin,2)) ;
}
于 2013-10-21T12:25:38.210 に答える
1

あまりエレガントではありませんが、機能します

public static String binaryToHex(String bin) {
    String hex = Long.toHexString(Long.parseLong(bin, 2));
    return String.format("%" + (int)(Math.ceil(bin.length() / 4.0)) + "s", hex).replace(' ', '0');
}

String.format() を使用して文字列を空白で埋め、replace() を呼び出してゼロに置き換えました。

于 2013-10-21T12:15:29.907 に答える
0

手動でゼロを追加するだけです。1 つの方法を次に示します。

public static String binaryToHex(String bin){
    return ("0000000000000000" + Long.toHexString(Long.parseLong(bin, 2)).replaceAll(".*.{16}", "$1");
}
于 2013-10-21T12:24:33.153 に答える