我正在制作一个程序,我必须阅读约。单个文件中的4,140,000个字节4mb(每天要读取数百个文件,我将其存储在byte[]
数组中)。这些字节中的每一个都必须转换为二进制,以便我可以在位级访问它们。目前,每次程序需要访问一个字节时,它都会调用一个函数,通过执行以下行将arr[byteIndex]
转换为二进制字符串:
return binary.Append(Convert.ToString(arr[byteIndex], 2).PadLeft(8, '0'));
该功能被称为数百万次。我想让程序运行得更快。什么是我可以用于时间优化的最佳方法/程序。
答案 0 :(得分:1)
不是直接处理字符串表示,而是直接处理位。
如果您的数组值为5A
,则可以执行第4位测试:
if ((arr[byteIndex] & (1 << 4)) != 0) { }
阐释:
arr[byteIndex] = 01011010
1<<4 = 00010000
-------- bitwise &
result = 00010000