Skip to content

Instantly share code, notes, and snippets.

@prodigga
Last active November 19, 2023 09:45
Show Gist options
  • Select an option

  • Save prodigga/54e09d8e3361a00b89422b36a1ed9b84 to your computer and use it in GitHub Desktop.

Select an option

Save prodigga/54e09d8e3361a00b89422b36a1ed9b84 to your computer and use it in GitHub Desktop.

Revisions

  1. prodigga revised this gist Aug 10, 2017. 1 changed file with 13 additions and 14 deletions.
    27 changes: 13 additions & 14 deletions ForceSetByteArraySize.cs
    Original file line number Diff line number Diff line change
    @@ -1,20 +1,19 @@

    private static unsafe void ForceSetByteArraySize(ref byte[] targetArray, long size)
    private static unsafe void ForceSetByteArrayLength(ref byte[] targetArray, long length)
    {
    if (size != 0)
    if (length != 0)
    {
    fixed (byte* testPtr = &targetArray[0])
    fixed (byte* targetArrayPtr = &targetArray[0])
    {
    byte* sizePtr = (byte*)&(size);
    byte* lengthPtr = (byte*)&(length);

    testPtr[-8] = sizePtr[0];
    testPtr[-7] = sizePtr[1];
    testPtr[-6] = sizePtr[2];
    testPtr[-5] = sizePtr[3];
    testPtr[-4] = sizePtr[4];
    testPtr[-3] = sizePtr[5];
    testPtr[-2] = sizePtr[6];
    testPtr[-1] = sizePtr[7];
    targetArrayPtr[-8] = lengthPtr[0];
    targetArrayPtr[-7] = lengthPtr[1];
    targetArrayPtr[-6] = lengthPtr[2];
    targetArrayPtr[-5] = lengthPtr[3];
    targetArrayPtr[-4] = lengthPtr[4];
    targetArrayPtr[-3] = lengthPtr[5];
    targetArrayPtr[-2] = lengthPtr[6];
    targetArrayPtr[-1] = lengthPtr[7];
    }
    }
    }
    }
  2. prodigga created this gist Aug 10, 2017.
    20 changes: 20 additions & 0 deletions ForceSetByteArraySize.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@

    private static unsafe void ForceSetByteArraySize(ref byte[] targetArray, long size)
    {
    if (size != 0)
    {
    fixed (byte* testPtr = &targetArray[0])
    {
    byte* sizePtr = (byte*)&(size);

    testPtr[-8] = sizePtr[0];
    testPtr[-7] = sizePtr[1];
    testPtr[-6] = sizePtr[2];
    testPtr[-5] = sizePtr[3];
    testPtr[-4] = sizePtr[4];
    testPtr[-3] = sizePtr[5];
    testPtr[-2] = sizePtr[6];
    testPtr[-1] = sizePtr[7];
    }
    }
    }