C# 如何从字符中解析垃圾[256]
我正在向定义为数组[256]的接口字段写入字符串,我不确定如何防止名称末尾的垃圾显示 以下是我的设置方式:C# 如何从字符中解析垃圾[256],c#,arrays,string,C#,Arrays,String,我正在向定义为数组[256]的接口字段写入字符串,我不确定如何防止名称末尾的垃圾显示 以下是我的设置方式: char[256] msg.name.Value = "This name".ToCharArray(); 另一方面,我正在将消息解压缩到数据库表中: newRow["Name"] = new string(msg.name.Value); 但我发现整个字符串的结尾都是垃圾。如何解析“thisname”结尾的垃圾?我习惯了在C++中使用 MeMCPY 来做这件事。 ToCharArr
char[256] msg.name.Value = "This name".ToCharArray();
另一方面,我正在将消息解压缩到数据库表中:
newRow["Name"] = new string(msg.name.Value);
但我发现整个字符串的结尾都是垃圾。如何解析“thisname”结尾的垃圾?我习惯了在C++中使用<代码> MeMCPY 来做这件事。 ToCharArray没有在末尾加0。因此,我想,考虑到这个问题,您可能会尝试实现一个扩展方法,它可以执行以下操作:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string test = "This is a test";
char[] testArr = test.ToPaddedCharArray(32);
for (int i = 0; i < testArr.Length; i++)
{
Console.WriteLine("{0} = {1}", testArr[i], (int)testArr[i]);
}
}
}
public static class MyExtensions
{
public static char[] ToPaddedCharArray(this String str, int length)
{
char[] arr = new char[length];
int minl = Math.Min(str.Length, length-1);
for (int i = 0; i < minl; i++)
{
arr[i] = str[i];
}
for (int i = minl; i < length; i++)
{
arr[minl] = (char)0;
}
return arr;
}
}
}
你看到的是什么垃圾?有用吗
char[256]msg.name.Value=“此名称\0”。ToCharArray()
char[256]msg.name.Value=“This name”.ToCharArray()代码>不是有效的C#。msg.name.Value实际上是如何定义的?看看如何在C中初始化字符#
T = 84
h = 104
i = 105
s = 115
= 32
i = 105
s = 115
= 32
a = 97
= 32
t = 116
e = 101
s = 115
t = 116
= 0
= 0
= 0
= 0
= 0
= 0
= 0
= 0
= 0
= 0
= 0
= 0
= 0
= 0
= 0
= 0
= 0
= 0
Press any key to continue . . .