Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 大十六进制到二进制_Java - Fatal编程技术网

Java 大十六进制到二进制

Java 大十六进制到二进制,java,Java,我看了很多关于stackoverflow的帖子,我已经找到了部分解决方案,但到目前为止我还没有找到一个适合我的解决方案。 new BigDecimal(“33246793757510329505”)。toString(2) 似乎最适合我(from:),但我确实需要前导零和尾随零。我是否可以将大的(大于长的)十六进制转换为二进制(字符串)表示形式 提前感谢。BigInteger类处理任意大的数字 尾随的零已准备好处理。要处理前导零,只需在前面添加一个“1”,以确保前导“1”位,然后将其再次剥离:

我看了很多关于stackoverflow的帖子,我已经找到了部分解决方案,但到目前为止我还没有找到一个适合我的解决方案。
new BigDecimal(“33246793757510329505”)。toString(2)
似乎最适合我(from:),但我确实需要前导零和尾随零。我是否可以将大的(大于长的)十六进制转换为二进制(字符串)表示形式


提前感谢。

BigInteger类处理任意大的数字

尾随的零已准备好处理。要处理前导零,只需在前面添加一个“1”,以确保前导“1”位,然后将其再次剥离:

String bits = new BigInteger("1" + hex, 16).toStting(2).substring(1);

你需要前导零吗?我不知道内置函数,但您可以自己轻松实现它:

public static String hex2binary(String hex) {
    StringBuilder result = new StringBuilder(hex.length() * 4);
    for (char c : hex.toUpperCase().toCharArray()) {
        switch (c) {
        case '0': result.append("0000"); break;
        case '1': result.append("0001"); break;
        case '2': result.append("0010"); break;
        case '3': result.append("0011"); break;
        case '4': result.append("0100"); break;
        case '5': result.append("0101"); break;
        case '6': result.append("0110"); break;
        case '7': result.append("0111"); break;
        case '8': result.append("1000"); break;
        case '9': result.append("1001"); break;
        case 'A': result.append("1010"); break;
        case 'B': result.append("1011"); break;
        case 'C': result.append("1100"); break;
        case 'D': result.append("1101"); break;
        case 'E': result.append("1110"); break;
        case 'F': result.append("1111"); break;
        default: throw new IllegalArgumentException("Invalid hex: '" + hex + "'");
        }
    }
    return result.toString();
}

@jlordo它是:
biginger(stringstr,int-radix)
@ValeriAtamaniouk:是的,你说得对,我在看bgdecime。我的错误。但我相信这个解决方案得到了前导零的RID,为了正确转换到base64(我的最终目标),我需要前导零和尾随零。@Jordo请参见编辑后的答案。(我意识到了前导零的问题,但忙了几分钟)@EliantenHolder,正如你所看到的,这个答案用一句简单的话来回答。很好。我怀疑在switch中处理小写字符可能更快,然后调用
toUpperCase
…@ValeriAtamaniouk:你是说额外的案例?我懒得打字;)无论输入时间有多长,这都不会成为应用程序的瓶颈……这是我一直在寻找的答案,非常简单但非常有用:)@EliantHolder:那你为什么不自己写呢?;)@现在已经很晚了,我正在考虑一种解决复杂问题的方法。我希望我自己能更快地找到你的答案:)谢谢你的快速回答,你一直在帮助我:)