将 UInt64 转换为浮点数
Convert UInt64 to float
如何将此 UInt64
转换为 float
?
UInt64 MyLongInt = 14250221004866263104;
float My4ByteFloat = MyLongInt;
Console.WriteLine(My4ByteFloat);
这与我正在执行的内存读取有关。我检索的值是一个 UInt64
,对应于 14250221004866263104
。我需要将它转换为 float
,因为我知道我的地址是 float
。现在,当我使用 Cheat Engine 执行此操作时,它会正确转换并给出此结果:-7088
。
当我用 C#
做时,它给了我 1425002E+19
.
现在我知道将 8 字节转换为 4 字节并不是最好的做法,并且在此过程中可能会出现一些问题,但是,由于 Cheat Engine 正在这样做并且得到了正确的结果,那么它必须有可能。
所以有人知道如何将此 UInt64
转换为 float
吗?
编辑:
这应该可以解决问题。
UInt64 MyLongInt = 14250221004866263104;
float My4ByteFloat = BitConverter.ToSingle(BitConverter.GetBytes(MyLongInt), 0);
Console.WriteLine(My4ByteFloat);
这里有两个问题:
您不能从屏幕截图中复制数字:您写了 14250221004866263104 但在您的屏幕截图中它是 14253330148871733248.
float
是 32 位类型,因此是 4 字节类型,如 int
,而不是 8 字节类型。
现在,如果我们只取 32 位,我们可以看到它是:
uint myuint = 0xc5dd8000;
然后:
[StructLayout(LayoutKind.Explicit)]
public struct SingleToInt32
{
[FieldOffset(0)]
public float Single;
[FieldOffset(0)]
public int Int32;
[FieldOffset(0)]
public uint UInt32;
}
float fl = new SingleToInt32 { UInt32 = myuint }.Single;
如何将此 UInt64
转换为 float
?
UInt64 MyLongInt = 14250221004866263104;
float My4ByteFloat = MyLongInt;
Console.WriteLine(My4ByteFloat);
这与我正在执行的内存读取有关。我检索的值是一个 UInt64
,对应于 14250221004866263104
。我需要将它转换为 float
,因为我知道我的地址是 float
。现在,当我使用 Cheat Engine 执行此操作时,它会正确转换并给出此结果:-7088
。
当我用 C#
做时,它给了我 1425002E+19
.
现在我知道将 8 字节转换为 4 字节并不是最好的做法,并且在此过程中可能会出现一些问题,但是,由于 Cheat Engine 正在这样做并且得到了正确的结果,那么它必须有可能。
所以有人知道如何将此 UInt64
转换为 float
吗?
编辑:
这应该可以解决问题。
UInt64 MyLongInt = 14250221004866263104;
float My4ByteFloat = BitConverter.ToSingle(BitConverter.GetBytes(MyLongInt), 0);
Console.WriteLine(My4ByteFloat);
这里有两个问题:
您不能从屏幕截图中复制数字:您写了 14250221004866263104 但在您的屏幕截图中它是 14253330148871733248.
float
是 32 位类型,因此是 4 字节类型,如int
,而不是 8 字节类型。
现在,如果我们只取 32 位,我们可以看到它是:
uint myuint = 0xc5dd8000;
然后:
[StructLayout(LayoutKind.Explicit)]
public struct SingleToInt32
{
[FieldOffset(0)]
public float Single;
[FieldOffset(0)]
public int Int32;
[FieldOffset(0)]
public uint UInt32;
}
float fl = new SingleToInt32 { UInt32 = myuint }.Single;