gpt4 book ai didi

java - 如何在java中以无符号方式将字节数组转换为Base 64字符串?

转载 作者:行者123 更新时间:2023-12-02 12:27:54 27 4
gpt4 key购买 nike

我正在努力在 C# 和 Java 中获取相同的 Base64 字符串

我希望 Java 在转换为 Base64 时将字节视为无符号字节。

这是我的 C# 代码

private static void Main(string[] args)
{
long baseTimeStamp = 1501492600;
byte[] bytes = BitConverter.GetBytes(baseTimeStamp * 114);

for (int i = 0; i < bytes.Length; i++)
{
bytes[i] = (byte)(bytes[i] >> 2);
}

string base64 = Convert.ToBase64String(bytes);

Console.WriteLine(base64);
}

在 Java 中,我想为相同的 long 值获取相同的 Base64

这是代码

public static void main(String[] args) {
long myLong = 1501492600;

byte[] bytes = longToBytes(myLong);

for(int i = 0; i < bytes.length / 2; i++)
{
int temp = bytes[i];
bytes[i] = bytes[bytes.length - i - 1];
bytes[bytes.length - i - 1] = (byte) temp;

bytes[i] = (byte)((bytes[i] >> 2));
}

System.out.println(DatatypeConverter.printBase64Binary(bytes));
}

private static byte[] longToBytes(long x) {
ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
buffer.putLong(x);
return buffer.array();
}

我尝试了注释方式和DatatypeConverter方式,但我得到了不同的字符串值。是否有标准的 JDK 方法,或者我应该编写自己的 base64 方法来将字节视为无符号字节?

最佳答案

Base64 转换位。它不知道也不关心您是否认为字节是有符号的还是无符号的。如果您得到不同的值,则问题出在其他地方。

但是,由于您正在进行位移,因此需要使用零填充版本 >>> 而不是符号扩展 >>。这可能是您问题的根源。

DatatypeConverter 仍然是最简单的方法。

关于java - 如何在java中以无符号方式将字节数组转换为Base 64字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45414872/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com