gpt4 book ai didi

c# - 语言间的方法差异(Python->C#)

转载 作者:行者123 更新时间:2023-11-28 17:43:57 27 4
gpt4 key购买 nike

我正在尝试从 C# 中的 Python 程序重现一系列代码。在 Python 中我有:

element1, element2 = struct.unpack('!hh', data[2:6])

上述语句从短-短(网络字节顺序)格式的数据“子串”中解包。结果值 (element1,element2) 是:9616

我在 C# 中的尝试是:

byte[] bytesOfInterval = ASCIIEncoding.ASCII.GetBytes (data.Substring (2, 4));
using (MemoryStream stream = new MemoryStream(bytesOfInterval)) {
using (BinaryReader reader = new BinaryReader(stream)) {
Logger.Trace (reader.ReadInt16().ToString());
Logger.Trace (reader.ReadInt16().ToString());
}
}

它输出:245764096

如您所见,Python 程序的输出与 C# 程序的输出略有不同。为了验证“子字符串”(输入),我将它们编码为十六进制格式以查看是否存在任何差异。它们都等于00600010,因此,输入相同,输出不同。 为什么?

注意事项:

最佳答案

我认为它是一个 endianness问题例如试试这个

Int16 x1 = 4096;  
var x2 = IPAddress.HostToNetworkOrder(x1);

x2 将是 16(24576 => 96 相同)

所以你可以使用IPAddress.HostToNetworkOrder方法。

关于c# - 语言间的方法差异(Python->C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20765312/

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