简体   繁体   English

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

[英]How can I add two Strings containing hexadecimal-numbers without converting them to int?

I have a hexadecimal number in a String which is to large to convert to int and long and want to add the value of another hexadecimal number.我在字符串中有一个十六进制数,它太大而无法转换为 int 和 long 并且想要添加另一个十六进制数的值。 So let's say I have this number:所以假设我有这个号码:

String hex1 = "0xf27f2029f9c103f77be78b9591c1ab27167858d27d789cd3ea8a270c67ea5d91";

And want to add:并想补充:

int hex2 = 0x1;  or  String hex2 = "0x1";

I know this question has been asked allready How to subtract or add two hexadecimal value in java but the answers don't work for me because they all involve conversion to int.我知道这个问题已经被问到如何在 Java 中减去或添加两个十六进制值,但答案对我不起作用,因为它们都涉及到 int 的转换。

You can do it as follows:你可以这样做:

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));
    }
}

Output:输出:

In decimal: 109684320921920394042076832992416841330182602685967688614501993994243850001810
In hexdecimal: f27f2029f9c103f77be78b9591c1ab27167858d27d789cd3ea8a270c67ea5d92

Change your code to:将您的代码更改为:

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

You need "" for entering a value for string.您需要“”来输入字符串值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM