Em C #, converta ulong [64] para byte [512] mais rápido?

Eu tenho uma maneira que converte ulongs em bytes usando turnos binários em uma instrução for, mas não é muito eficiente em termos de tempo. Existe uma maneira de lançar umulong matriz de tamanho 64 diretamente em uma matriz de bytes de tamanho 512? Esta é uma seção do código que é executada milhares de vezes e eu preciso salvar todos os milissegundos para poder, por sua vez, salvar segundos.

Edit: Neste momento, é isso que estou fazendo:

                for (int k = 0; k < ulongs.Length; k++) {
                    bytes[(k << 3)] = (byte)(ulongs[k] >> 56);
                    bytes[(k << 3) + 1] = (byte)(ulongs[k] >> 48);
                    bytes[(k << 3) + 2] = (byte)(ulongs[k] >> 40);
                    bytes[(k << 3) + 3] = (byte)(ulongs[k] >> 32);
                    bytes[(k << 3) + 4] = (byte)(ulongs[k] >> 24);
                    bytes[(k << 3) + 5] = (byte)(ulongs[k] >> 16);
                    bytes[(k << 3) + 6] = (byte)(ulongs[k] >> 8);
                    bytes[(k << 3) + 7] = (byte)(ulongs[k]);
                }

questionAnswers(4)

yourAnswerToTheQuestion