2

我使用此代码将十六进制转换为二进制,但仅适用于 8 位。如何扩展为 16 位?例如,我想将 FFFF 转换为 1111111111111111 ....我还需要填充零 0...

 void HexToBinary1(String Hex) {

    int i = Integer.parseInt(Hex, 16);//16 bits
    String Bin = Integer.toBinaryString(i);//Converts int to binary

    String Bin2="";
    if(Bin.length()==8){Bin2=Bin;}
    if(Bin.length()==7){Bin2="0"+Bin;}
    if(Bin.length()==6){Bin2="00"+Bin;}
    if(Bin.length()==5){Bin2="000"+Bin;}
    if(Bin.length()==4){Bin2="0000"+Bin;}
    if(Bin.length()==3){Bin2="00000"+Bin;}
    if(Bin.length()==2){Bin2="000000"+Bin;}
    if(Bin.length()==1){Bin2="0000000"+Bin;}

    text1.setText(Bin2);//Shows binary
}
4

3 回答 3

2

采用

String HexToBinary(String Hex) {
        String bin =  new BigInteger(Hex, 16).toString(2);
        int inb = Integer.parseInt(bin);
        bin = String.format(Locale.getDefault(),"%08d", inb);
        return bin;
}

它将以 8 位格式返回二进制字符串。

于 2013-05-24T09:19:12.443 回答
2

你需要告诉Java int 是十六进制的,像这样:

String HexToBinary(String Hex) {
    int i = Integer.parseInt(Hex, 16);
    String Bin = Integer.toBinaryString(i);
    return Bin;
}
于 2013-05-24T09:27:19.207 回答
0

试试这个

public static String getBits(double value)
{
    //get bit-string of double
    String printString = (Long.toBinaryString(Double.doubleToRawLongBits(value)));

    //add leading zeros if bitstring is shorter than 64 bits
    while (printString.length() < 64)
        printString = "0" + printString;

    //format string by adding byte padding
    StringBuilder bitwise = new StringBuilder();
    for(int i = 0; i<8; i++)
        bitwise.append(printString.substring(i*8, (i+1)*8)+" ");

    return bitwise.toString();
}

随意进一步适应 int 并添加解析 HEX 字符串的功能。

于 2013-05-24T09:31:47.387 回答