java无符号字符_如何创建表示Java的字符串,就像它是无符号的64位值一样

我的组件被传递了一个很长的值,我后来将其用作缓存中的密钥.密钥本身是长值的字符串表示,就好像它是无符号的64位值.也就是说,当我的组件被交给-2944827264075010823L时,我需要将其转换为字符串键“15501916809634540793”.

我有一个解决方案,但它似乎蛮力,它让我有点不安.本质上,我将long转换为十六进制字符串表示形式(所以-2944827264075010823L变为“d721df34a7ec6cf9”)并将十六进制字符串转换为BigInteger:

String longValueAsHexString = convertLongToHexString(longValue);

BigInteger bi = new BigInteger(longValueAsHexString, 16);

String longValueString = bi.toString();

然后我使用longValueString作为缓存的密钥.

我不能使用Long.toString(longValue,16),因为它返回绝对值的十六进制字符串,前缀为“ – ”.

所以我的convertLongToHexString看起来像这样:

long mask = 0x00000000ffffffffL;

long bottomHalf = number & mask;

long upperHalf = (number >> 32) & mask;

String bottomHalfString = Long.toString(bottomHalf, 16);

if (bottomHalfString.length() != 8) {

String zeroes = "0000000000000000";

bottomHalfString = zeroes.substring(16-bottomHalfString.length()) + bottomHalfString;

}

return Long.toString(upperHalf,16)+bottomHalfString;

必须有一种更优雅的方式来做到这一点.有什么建议?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值