簡體   English   中英

將UInt64轉換為float

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM