繁体   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