React Native中无Node.js依赖转十六进制字符串到BigInt遇错求助
解决React Native中使用big-integer转换十六进制字符串的问题
问题根源
big-integer包的构造函数默认把输入当作十进制数处理,但你传入的是带0x前缀的十六进制字符串,这就导致解析失败,抛出Invalid integer错误。而原生BigInt会自动识别0x前缀并按十六进制解析,第三方包则需要你显式指定基数。
修复方案
调用big-integer时,必须显式传入第二个参数16,告诉它按十六进制规则解析字符串,两种写法都可行:
代码示例
import BigInt from 'big-integer'; let hexString = '0x9c46e9ec68e9bd4fe1faaba294cba38a71aa177534cdd1b6c7dc0dbd0abd7a7'; // 写法1:保留0x前缀,直接指定基数16 const bigIntNum1 = BigInt(hexString, 16); console.log('转换结果', bigIntNum1.toString()); // 写法2:先去掉0x前缀,再指定基数16 const bigIntNum2 = BigInt(hexString.slice(2), 16); console.log('转换结果', bigIntNum2.toString());
补充说明
转换后的大整数可以直接使用big-integer提供的运算方法,若需要输出可读的数值字符串,调用toString()即可。
内容的提问来源于stack exchange,提问作者Darjusch Schrand
相关产品推荐
相关产品推荐

