[英]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.