【发布时间】:2012-02-08 07:16:58
【问题描述】:
在 C# 中将 int 转换为 4 字节的最快方法是什么?
最快的是执行时间而不是开发时间。
我自己的解决方案是这段代码:
byte[] bytes = new byte[4];
unchecked
{
bytes[0] = (byte)(data >> 24);
bytes[1] = (byte)(data >> 16);
bytes[2] = (byte)(data >> 8);
bytes[3] = (byte)(data);
}
现在我发现我的解决方案比 struct 和 BitConverter 都好几个滴答声。
我认为 unsafe 可能是最快的选项并接受它作为答案,但我更愿意使用托管选项。
【问题讨论】:
-
fastest是指 a) 最少的代码量还是 b) 最好的性能? -
“最快”取决于您希望这些字节的位置。
-
你有多少内存?如果整数都是 +ve 并且值的范围不大,那么查找数组怎么样? (不确定这会比一个位移更快)。
-
它不适用于我的情况,但它是原创的:)。
-
供参考,如C# Language Specification, Shift Operators 中所述:移位操作永远不会导致溢出,并且在检查和未检查的上下文中产生相同的结果。所以问题中未经检查的陈述是矫枉过正的。
标签: c# .net bit-manipulation