在C#中将整数数组转换为字符串

3

我有一个 int[] 数组:

RXBuffer[0], RXBuffer[1],..., RXBuffer[9]

每个值代表一个ASCII码,所以0x31代表1,0x41代表A

我该如何将这些转换为一个10个字符的字符串?

到目前为止,我尝试过Data = RxBuffer.ToString();。但它显示Data等于System.Int32[],这不是我的数据。

我该怎么做?


这些整数都是单个数字0-9吗? - Marc Gravell
不是真的。字母也有。 - maniac84
1
那我就有点困惑了;如果这是一个“int数组”,每个整数代表什么?在“int数组”中,“字母表”是什么?这些是Unicode代码点吗?还是其他的……?坦白地说,我认为这里的每个人都假设{0,1,2,3}会变成"0123" - Marc Gravell
1
也许提供样例输入/输出会是个好主意。 - Marc Gravell
@manian84,你真的应该把那个说清楚。而且,老实说,char[]会是更好的选择。我会更新我的答案。 - Marc Gravell
显示剩余2条评论
2个回答

4

假设“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);

你是指这个吗?string s = new string(Array.ConvertAll(RXBuffer, x => (char)x));还是这个?string s = new string(RXBuffer); - maniac84
你的更简单且更聪明。我喜欢它。 - jamesbar2

3

LolCoder 你所需要的是:

string.Join("",RXBuffer);

============== Or =================

        int[] RXBuffer = {0,1,2,3,4,5,6,7,8,9};
        string result  =  string.Join(",",RXBuffer);

但是我不想让它们之间有逗号。 - maniac84
整数数组是ASCII值。例如,1的ASCII值为0x31,A的ASCII值为0x41。 - maniac84
你不会得到逗号..它将生成“0123456789”。 - Rajesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接