BitConverter与铸造差异

本文关键字:BitConverter | 更新日期: 2023-09-27 18:22:19

假设:

int onlyLastByteContainsValue = 35;

以下哪项更快,为什么?

byte valueInByte = BitConverter.GetBytes(onlyLastByteContainsValue)[3];

byte valueInByte = (byte)onlyLastByteContainsValue;

后续问题:以上两者之间还有其他区别吗?

BitConverter与铸造差异

当然,在关闭优化的情况下,转换速度会更快,从我的评测到x5(打开优化的情况甚至更快)。

当然,有不同的事情在发生:

  • BitConverter语句分配一个大小为sizeof(int)的数组,用int值的所有字节填充它,然后对数组进行索引以仅检索一个字节。不用说,这是浪费资源。

  • 强制转换检查指定的值是否在byte的范围内(除非指定了unchecked),并将该值的最低有效字节强制转换为byte