To begin with, I would suggest using Encoding.ASCII everywhere, not ASCIIEncoding.ASCII - the latter somewhat implies that the ASCII property is a member of the ASCIIEncoding class, but this is not so.
If you know that your byte array is just ASCII text, you can freely use Encoding.UTF8 , since every character present in ASCII was equally displayed in both UTF-8 and ASCII.
If you want to check the correctness first, you just need to check that each byte in the array is less than 128
bool isAscii = tagData.All(b => b < 128);
source share