我正在使用以下代码将一些数据从字节数组转换为字符串:
var res = new List<byte>();
Encoding.UTF8.GetString(res.ToArray());
在调试器中检查时,它后面有许多不可打印的字符:
"美元\0�(j\f�\u007f">
当我点击调试器中属性的放大镜时,Visual Studio会正确地将该字符串标识为USD,但当该字符串传递给其他方法时,显然整个字符串都传递了。
我需要Visual Studio将其标识为的格式的字符串,即USD,所以我猜有一个函数可以对其进行消毒?
下面的代码将执行您需要的输入清理。
// Sample input with bytes beyond the null terminator.
byte[] binary = { (byte) '0', (byte) '1', (byte) '2', 0, (byte) '8', (byte) '9' };
int length;
// Find the null terminator or total length of input.
for (length = 0; length < binary.Length && binary[length] > 0; ++length);
string text = Encoding.UTF8.GetString(binary, 0, length);