【问题标题】:Best method to convert byte-array's elements to binary将字节数组的元素转换为二进制的最佳方法
【发布时间】:2015-09-08 17:06:09
【问题描述】:

我正在制作一个程序,我必须阅读大约。单个文件 4,140,​​000 字节 4mb(每天要读取数百个文件,我将它们存储在 byte[] 数组中)。这些字节中的每一个都必须转换为二进制,以便我可以在位级别访问它们。目前,当程序每次需要访问一个字节时,它都会调用一个函数,通过执行以下行将arr[byteIndex]转换为二进制字符串:

return binary.Append(Convert.ToString(arr[byteIndex], 2).PadLeft(8, '0'));

该函数被调用了数百万次。我想让程序运行得更快。我可以用于时间优化的最佳方法/程序是什么。

【问题讨论】:

  • 一个字节已经是二进制值了
  • 是的,但是当我访问它时...例如 FF,它会给我“F”而不是“11111111”,这就是为什么我必须将它转换为二进制字符串
  • 你知道&| 吗?位访问不需要其他任何东西。
  • 我不明白...请详细说明
  • 您询问如何让您的程序运行得更快。不要对字节的字符串表示进行操作,要么使用按位逻辑对所需的位进行操作,要么使用类似于数据结构的位集:stackoverflow.com/questions/8144349/…

标签: c# arrays optimization type-conversion


【解决方案1】:

不要处理字符串表示,而是直接处理位。

如果您的数组值为5A,则可以这样测试位4:

if ((arr[byteIndex] & (1 << 4)) != 0) { }

说明:

arr[byteIndex] = 01011010
1<<4           = 00010000
                 -------- bitwise &
result         = 00010000

【讨论】:

    猜你喜欢
    • 2012-01-26
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2013-07-17
    相关资源
    最近更新 更多