我有一个 int[]
数组:
RXBuffer[0], RXBuffer[1],..., RXBuffer[9]
每个值代表一个ASCII码,所以0x31代表1
,0x41代表A
。
我该如何将这些转换为一个10个字符的字符串?
到目前为止,我尝试过Data = RxBuffer.ToString();
。但它显示Data
等于System.Int32[]
,这不是我的数据。
我该怎么做?
我有一个 int[]
数组:
RXBuffer[0], RXBuffer[1],..., RXBuffer[9]
每个值代表一个ASCII码,所以0x31代表1
,0x41代表A
。
我该如何将这些转换为一个10个字符的字符串?
到目前为止,我尝试过Data = RxBuffer.ToString();
。但它显示Data
等于System.Int32[]
,这不是我的数据。
我该怎么做?
假设“int数组”中的值在0-9范围内(这是将长度为10的“int数组”转换为10个字符字符串的唯一合理方式) - 这是有点奇特的方法:
string s = new string(Array.ConvertAll(RXBuffer, x => (char)('0' + x)));
但非常高效(char[]
数组自动调整大小,字符串转换只需使用数学运算,而无需使用ToString()
)。
编辑:随着修订的变更使得这些实际上是ASCII码,它变得更加简单:
string s = new string(Array.ConvertAll(RXBuffer, x => (char)x));
坦白说,如果这些值是ASCII字符(或者Unicode字符),最好将其存储为char[]
;这种方法覆盖了相同的范围,占用一半的空间,而且操作起来更加简单明了。
string s = new string(RXBuffer);
LolCoder 你所需要的是:
string.Join("",RXBuffer);
============== Or =================
int[] RXBuffer = {0,1,2,3,4,5,6,7,8,9};
string result = string.Join(",",RXBuffer);
{0,1,2,3}
会变成"0123"
。 - Marc Gravellchar[]
会是更好的选择。我会更新我的答案。 - Marc Gravell