如何将十六进制格式的Long字符串转换为Long变量?
十六进制格式字符串转Long变量的实现方法
完全可行,你之前的方法无效是因为默认的toLong()会按十进制解析字符串,而你的字符串是带0x前缀的十六进制格式,十进制解析无法识别。以下是几种可行的实现方式:
方法1:使用Long.decode()(推荐)
Java的Long.decode()方法可以自动识别带0x/0X前缀的十六进制字符串,直接解析为Long值:
val strLong: String = "0xFF007A45" val longIWant: Long = java.lang.Long.decode(strLong)
方法2:去掉前缀后指定基数解析
先移除字符串的0x前缀,再调用toLong(16)指定按十六进制解析:
val strLong: String = "0xFF007A45" // 处理小写0x前缀 val longIWant: Long = strLong.removePrefix("0x").toLong(16) // 如果需要兼容大写0X前缀,用removePrefixes val longIWant: Long = strLong.removePrefixes("0x", "0X").toLong(16)
方法3:截取子串后解析
通过截取字符串从第3位开始的部分,再指定十六进制基数解析:
val strLong: String = "0xFF007A45" val longIWant: Long = strLong.substring(2).toLong(16)
以上几种方法都能得到你想要的0xFF007A45对应的Long值。
内容的提问来源于stack exchange,提问作者david CHOLLEZ
相关产品推荐
相关产品推荐

