簡體   English   中英

元帥將結構復制到字節數組的每個字節為0

[英]Marshal copying struct to byte array comes out as 0 for each byte

我有一個采用類型並將其轉換為字節數組的方法。 但是由於某種原因,字節數組結果在每個索引中總是以0結尾。

我不知道為什么會這樣,我正在傳遞我自己的結構,該結構確實設置了值,我正在檢查該值,所以我不應該為每個索引獲取0。

這是我轉換為字節數組的方法:

    public static bool TryGetBytes<T>(T obj, ref byte[] arr)
    {
        int size = Marshal.SizeOf(obj);
        if (size > arr.Length)
        {
            Debug.Log("Size error!" + size + " : "+arr.Length);
            return false;
        }

        IntPtr ptr = Marshal.AllocHGlobal(size);
        Marshal.StructureToPtr(obj, ptr, true);
        Marshal.Copy(ptr, arr, size, 0);
        Marshal.FreeHGlobal(ptr);
        return true;
    }

我在這里可能做錯了什么嗎? 我是否需要ref 我嘗試沒有ref ,沒有發生任何差異。 所以我有點困惑如何使它工作。

您在使用Marshal時出錯。復制: https ://msdn.microsoft.com/zh-cn/library/ms146631( v= vs.110).aspx

 public static void Copy(
    IntPtr source,
     byte[] destination,
     int startIndex,
     int length
 ) 

您已將起始索引和長度顛倒了。 我猜它不會引發異常,因為長度為0。

暫無
暫無

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

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