C# - 转换 int 并将其放入具有偏移量的字节数组的最快方法

C# - Fastest way to convert an int and put it in a byte array with an offset

我正在编写自定义字节流,我想要尽可能快的 write/read 方法。这是我当前对 int32 的写入和读取方法的实现:

    public void write(int value)
    {
        unchecked
        {
            bytes[index++] = (byte)(value);
            bytes[index++] = (byte)(value >> 8);
            bytes[index++] = (byte)(value >> 16);
            bytes[index++] = (byte)(value >> 24);
        }
    }

    public int readInt()
    {
        unchecked
        {
            return bytes[index++] |
                (bytes[index++] << 8) |
                (bytes[index++] << 16) |
                (bytes[index++] << 24);
        }
    }

但我真正想要做的是将“int”转换为字节指针(或类似的东西)并将内存复制到“bytes”数组中“index”为 offsetC# 有可能吗?

目标是:
避免创建新数组。
避免循环。
避免对“index”变量进行多重赋值。
减少指令数量。

您的代码速度非常快,但您可以通过以下更改使它的速度更快(几乎快 2 倍):

bytes[index] = (byte)(value);
bytes[index+1] = (byte)(value >> 8);
bytes[index+2] = (byte)(value >> 16);
bytes[index+3] = (byte)(value >> 24);
index = index + 4;
unsafe
{
    fixed (byte* pbytes = &bytes[index])
    {
        *(int*)pbytes = value;
        value = *(int*)pbytes;
    }
}

但要注意可能的数组索引溢出。