Java 如何添加两个包含十六进制数的字符串而不将其转换为int?

Java 如何添加两个包含十六进制数的字符串而不将其转换为int?,java,hex,Java,Hex,我在字符串中有一个十六进制数,它太大了,无法转换为int和long,并且希望添加另一个十六进制数的值。 假设我有这个号码: String hex1 = "0xf27f2029f9c103f77be78b9591c1ab27167858d27d789cd3ea8a270c67ea5d91"; 并希望补充: int hex2 = 0x1; or String hex2 = "0x1"; 我知道这个问题已经完全准备好了,但答案对我来说并不适用,因为它们都涉及到转换为int。将代码更改为: St

我在字符串中有一个十六进制数,它太大了,无法转换为int和long,并且希望添加另一个十六进制数的值。 假设我有这个号码:

String hex1 = "0xf27f2029f9c103f77be78b9591c1ab27167858d27d789cd3ea8a270c67ea5d91";
并希望补充:

int hex2 = 0x1;  or  String hex2 = "0x1";
我知道这个问题已经完全准备好了,但答案对我来说并不适用,因为它们都涉及到转换为int。

将代码更改为:

String hex1="0xf27f2029f9c103f77be78b9591c1ab27167858d27d789cd3ea8a270c67ea5d91";
int hex2=0x1;
string hex2="0x1";

您需要“”来输入字符串的值。

您可以按如下操作:

import java.math.BigInteger;

public class Main {
    public static void main(String[] args) {
        String hex1 = "0xf27f2029f9c103f77be78b9591c1ab27167858d27d789cd3ea8a270c67ea5d91";
        String hex2 = "0x1";
        System.out.println(
                "In decimal: " + new BigInteger(hex1.substring(2), 16).add(new BigInteger(hex2.substring(2), 16)));
        System.out.println("In hexdecimal: "
                + new BigInteger(hex1.substring(2), 16).add(new BigInteger(hex2.substring(2), 16)).toString(16));
    }
}
输出:

In decimal: 109684320921920394042076832992416841330182602685967688614501993994243850001810
In hexdecimal: f27f2029f9c103f77be78b9591c1ab27167858d27d789cd3ea8a270c67ea5d92

所以把它们转换成一个大整数。如果您不将
字符串
转换为整数类型,那么添加这两个
字符串
(s)将为您提供
“0xf27f2029f9c103f77be78b9591c1ab27167858d27d789cd3ea8a270c67ea5d910x1”
——我敢打赌您不会想到这一点。我真聪明。谢谢:)