Редактировать: Устранена проблема с кодом ниже:
String tokenId="0x1800000000001289000000000000000000000000000000000000000000000000";
BigInteger token1;
if (tokenId.startsWith("0x")){
token1=new BigInteger(tokenId.substring(2),16);
У меня есть длинная строка, которую мне нужно назначить как BigInteger и передать ее другому методу библиотеки Web3j. Тем не менее, я продолжаю получать исключения числового формата. Любая помощь по этому вопросу?
Ниже приведено исключение метода:
public void getBalance1155(String walletAddress) throws ExecutionException, InterruptedException {
//define constant values
Web3j web3j=Web3j.build(new HttpService("https://mainnet.infura.io/v3/<apiKey>>"));
String contractAddress = "0xfaaFDc07907ff5120a76b34b731b278c38d6043C";
BigInteger tokenId=new BigInteger("0x1800000000001289000000000000000000000000000000000000000000000000",16);
NoOpProcessor processor = new NoOpProcessor(web3j);
Credentials credentials = Credentials.create("privatekey");
TransactionManager txManager = new FastRawTransactionManager(web3j, credentials, processor);
//Query Blockchain to get balance of WALLETADDRESS from Contract for given TokenID
ERC1155 token = ERC1155.load(contractAddress, web3j, txManager, DefaultGasProvider.GAS_PRICE, DefaultGasProvider.GAS_LIMIT);
RemoteCall<BigInteger> sendCall = token.balanceOf(walletAddress, tokenId);
BigInteger balance=sendCall.sendAsync().get();
log.info("balance >>>>>> " +balance);
}
Вот исключение:
java .lang.NumberFormatException: Для ввода строка: «0x180000000000128900000000000000000000000000000000000000000000000000000000000000000000000000» в java .base / java .lang.NumberFormatException.forInputString (NumberFormatException. java: 65) в java .base / * 101L.p. 1020 *: 692) на java .base / java .lang.Long.pongseparLong (Long. java: 817)