gpt4 book ai didi

c# - 将 long 转换为字节数组时 C# 和 Java 之间的差异

转载 作者:太空宇宙 更新时间:2023-11-03 17:27:54 25 4
gpt4 key购买 nike

我没有使用 Java 的经验,所以这让我头疼:-

Java 代码:

long foo = 1234567890;
byte[] boo = ByteBuffer.allocate(8).putLong(foo).array();

C#代码:

long foo = 1234567890;
byte[] bar = BitConverter.GetBytes(foo);

// reverse to match Java's Big Endianess
byte[] boo = bar.Reverse().ToArray();

在 Java 示例中,boo = 0, 0, 0, 0, 73, -106, 2, -46

但是在 C# 中,boo = 0, 0, 0, 0, 73, 150, 2, 210

有没有脑洞大点的人,解释一下为什么会有所不同?

非常感谢!

最佳答案

Java 使用有符号字节,C# 使用无符号字节。请注意,所有小于 127 的值都匹配,大于 128 的值将转换为负数。如果将 C# 数组从 byte 转换为 sbyte,则值将匹配。

关于c# - 将 long 转换为字节数组时 C# 和 Java 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5476939/

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