gpt4 book ai didi

c# - 将 UINT64 编码为 float

转载 作者:行者123 更新时间:2023-11-30 21:27:20 24 4
gpt4 key购买 nike

我在 C# 中有将 UInt64 转换为 float 的代码,输入的值例如为“4537294320117481472”。完成工作的代码在第一 block ,第二 block 显示相关功能,答案在底部。

byte[] rawParameterData = new byte[8];

Console.Write("Enter Value: ");
string rawDataString = Console.ReadLine();
UInt64 rawParameterInteger = UInt64.Parse(rawDataString);

rawParameterData = ConvertFromUInt64(rawParameterInteger);

float convertedParameterData = ConvertToFloat(rawParameterData, 0);

rawParameterData 现在等于 [62,247,181,37,0,0,0,0] 的字节数组

convertedParameterData 现在等于 0.4838039

public static byte[] ConvertFromUInt64(UInt64 data)
{
var databuf = BitConverter.GetBytes(data);
return SwapBytes(databuf, 8); // DIS is big-endian; need to convert to little-endian: least significant byte is at lower byte location.
}

static float ConvertToFloat(byte[] data, int offset)
{
var databuf = CopyData(data, offset, 4);
return BitConverter.ToSingle(databuf, 0);
}


static byte[] SwapBytes(byte[] srcbuf, int datalength)
{
var destbuf = new byte[srcbuf.Length];
for (var i = 0; i < datalength; i++)
destbuf[datalength - 1 - i] = srcbuf[i];
return destbuf;
}

代码似乎依赖于 C# 中的 BitConverter.ToSingle(databuf, 0) 函数。

这可以用 Python 完成吗?谢谢。

最佳答案

在python中,这很简单

import struct

a = 4537294320117481472

b = struct.pack('Q', a)
f = struct.unpack('ff', b)

print(f) # (0.0, 0.4838038980960846)

https://docs.python.org/3/library/struct.html

关于c# - 将 UINT64 编码为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57922866/

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