I have a large byte array with mostly 0’s but some values that I need to process. If this was C++ or unsafe C# I would use a 32bit pointer and only if the current 32bit were not 0, I would look at the individual bytes. This enables much faster scanning through the all 0 blocks. Unfortunately this must be safe C# 🙂
I could use an uint array instead of a byte array and then manipulate the individual bytes but it makes what I’m doing much more messy than I like. I’m looking for something simpler, like the pointer example (I miss pointers sigh)
Thanks!
If the code must be safe, and you don’t want to use a larger type and “shift”, them you’ll have to iterate each byte.
(edit) If the data is sufficiently sparse, you could use a dictionary to store the non-zero values; then finding the non-zeros is trivial (and enormous by sparse arrays become cheap).