【问题标题】:Java BitConverter equivalentJava BitConverter 等效
【发布时间】:2015-02-16 10:10:10
【问题描述】:

在 C# 中有以下块

using (var nuq = new RNGCryptoServiceProvider())
{
    var data = new byte[4];
    nuq.GetBytes(data);
    return BitConverter.ToUInt32(data, 0).ToString(CultureInfo.InvariantCulture);
}

我想用 Java 转换它。到目前为止,我有:

SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
var data = new byte[4];
random.nextBytes(data);

我不知道 BitConverter 的 Java 等价物。

如何将数据转换为UInt32

【问题讨论】:

  • 好吧,你不能真正做到这一点,因为 Java 中没有 uint32。您必须使用long。或者 Guava 的 UnsignedInts
  • 好的,我该怎么做?可以举个例子吗?

标签: java c# bitconverter


【解决方案1】:

当您获得随机数时,您可以返回对将字节转换为 long 的方法的调用,类似于:

public long bytesToLong(byte[] bytes) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.put(bytes);
    buffer.flip();//need flip 
    return buffer.getLong();
}

【讨论】:

  • 这应该从哪个 java 版本开始工作? Long.BYTES 在 JDK6 中不可用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多