[英]Convert UInt64 to float
如何将该UInt64
转换为float
?
UInt64 MyLongInt = 14250221004866263104;
float My4ByteFloat = MyLongInt;
Console.WriteLine(My4ByteFloat);
这与我正在执行的内存读取有关。 我正在检索的值是UInt64
,对应于14250221004866263104
。 我需要将其转换为float
因为我知道我的地址是float
。 现在,当我使用作弊引擎执行此操作时,它将正确转换并给出以下结果: -7088
。 当我使用C#
它会给我1425002E+19
。
现在,我知道将8字节转换为4字节并不是最好的方法,并且在此过程中可能会出现一些问题,但是,由于Cheat Engine正在这样做并且它得到了正确的结果,那么这一定是可能的。
因此,有人知道如何将UInt64
转换为float
吗?
这里有两个问题:
您无法从屏幕截图中复制数字:您写了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 MyLongInt = 14250221004866263104;
float My4ByteFloat = BitConverter.ToSingle(BitConverter.GetBytes(MyLongInt), 0);
Console.WriteLine(My4ByteFloat);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.