簡體   English   中英

獲取對象的類型,然后投射它?

[英]Get Type of object and then cast it?

我正在嘗試在C#中做一些“ memcpy”破解。 我一直被困在這部分上,因為它不會將System.Type轉換為byte *

    public unsafe void memcpy(byte* dest, object src, int length)
    {
        byte* nsrc;
        byte* ndst;
        nsrc = (byte*)((src.GetType())src);

    }

如您所見,我嘗試獲取對象的類型,然后將其強制轉換為原始對象。

有任何想法嗎?

更新:

也許使用序列化?

    private byte[] ObjectToByteArray(Object obj)
    {
        if(obj == null)
            return null;
        BinaryFormatter bf = new BinaryFormatter();
        MemoryStream ms = new MemoryStream();
        bf.Serialize(ms, obj);
        return ms.ToArray();
    }

    private void memcpy(byte[] dest, int pos, object src, int len)
    {
        byte[] ba = ObjectToByteArray(src);
        Array.Copy(ObjectToByteArray(src), 0, dest, pos, len);
    }

不清楚您想要什么,但這可能有用嗎?

int yourInt32 = ...;
byte[] bitsFromInt32Value = BitConverter.GetBytes(yourInt32);

long yourInt64 = ...;
byte[] bitsFromInt64Value = BitConverter.GetBytes(yourInt64);

來自msdn:

指針類型不繼承自對象,並且指針類型和對象之間不存在任何轉換。 同樣,裝箱和拆箱也不支持指針。 但是,您可以在不同的指針類型之間以及在指針類型和整數類型之間進行轉換。

鏈接: http//msdn.microsoft.com/zh-cn/library/y31yhkeb(v = vs.100).aspx

            int number = 200;

            unsafe
            {
                // Convert to byte:
                byte* p = (byte*)&number;
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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