检查 C# 字节数组是否包含字符串

use*_*557 0 c# string byte bytearray

有没有办法检查 byte[] 中的字节是否是有效字符串,因此它是否仅包含 ASCII 字符。

if (isValidASCII(myByteArray)) {
....
}
Run Code Online (Sandbox Code Playgroud)

我可以像上面的例子一样使用但具有功能性的东西。

Dmi*_*nko 6

那么,如果

仅包含 ASCII 字符

表示带有代码的符号[32..127](对应的字符是[' '..'~']) - 标准 ASCII 表字符,不包括命令字符:

Boolean isAscii = myByteArray.All(b => b >= 32 && b <= 127)
Run Code Online (Sandbox Code Playgroud)

但是,像这样定义的有效字符串很可能是

 "$d|1 ?;)y" // this is a valid ASCII characters based string
Run Code Online (Sandbox Code Playgroud)

或类似。如果你想把这个简单的Linq包装成一个方法:

  public static bool isValidASCII(IEnumerable<byte> source) {
    if (null == source)
      return true; // or false, or throw exception

    return source.All(b => b >= 32 && b <= 127);
  }

  ...

  if (isValidASCII(myByteArray)) {
     ...
  }
Run Code Online (Sandbox Code Playgroud)