【发布时间】:2010-01-25 16:41:48
【问题描述】:
我有一种方法可以在 for 语句中使用二进制移位将 ulong 转换为字节,但它的时间效率不是很高。有没有办法将大小为 64 的 ulong 数组直接转换为大小为 512 的字节数组?这是一段运行数千次的代码,我需要每毫秒保存一次,这样我才能反过来节省秒数。
编辑: 现在这就是我正在做的事情:
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]);
}
【问题讨论】:
-
发布您想要提高效率的代码可能会有所帮助。
-
我认为这是一个有趣的问题,因为这是使用其他语言 DLL 时的普遍问题。
标签: c# optimization