有没有一种简单的方法将char []数组重新转换为Int32 []?

时间:2014-04-22 15:41:02

标签: c# arrays casting

我正在使用C#程序从一系列文本文件中擦除扩展的ASCII字符(示例在我的输入字符串中)。这就是我遇到的问题。虽然我可以在char循环中重新设置Int32for,但我试图查看是否有任何方法,将数组重新转换为{ {1}}价值观?在一个完美的世界里,我想直接传递Int32一系列的处理方法。现在,我计划只创建一个采用Int32数组并返回char数组的方法。有没有更简单的方法来执行此操作,类似于我的代码中包含的评论?

Int32

我的计划B:

string value = "Slide™1½”C4®";
byte[] asciiValue = Encoding.ASCII.GetBytes(value);   // byte array
char[] array = value.ToCharArray();                   // char array
 /* 
    is there something like
       Int32[] int32Array = array[].ToInt32();
 */
Console.WriteLine("CHAR\tBYTE\tINT32"); 
for (int i = 0; i < array.Length; i++) {
    char  letter     = array[i];
    byte  byteValue  = asciiValue[i];
    Int32 int32Value = array[i];
     /* 
        ... evaluate int32Value and do stuff ...  
     */
    Console.WriteLine("{0}\t{1}\t{2}", letter, byteValue, int32Value);
}
Console.ReadLine();

3 个答案:

答案 0 :(得分:2)

您可以使用LINQ。

char[] array = new char[] { 'a', 'b', 'c', '1', '2', '3' };
int[] int32Value = array.Select(r=> (int) r).ToArray();

如果您想将数字字符转换为int,例如将字符'1'更改为数字1,则可以执行以下操作:

char[] array = new char[] { '1', '2', '3', '4' };
int[] intArray = array.Where(char.IsDigit)
                      .Select(r => (int) char.GetNumericValue(r))
                      .ToArray();

这将为您提供数字表示而不是ASCII值。

答案 1 :(得分:0)

使用LINQ?

char[] array = value.ToCharArray(); 
int[] newarray = array.Select(c => (int)c).ToArray();

答案 2 :(得分:0)

您可以使用Array.ConvertAll

int[] ints = Array.ConvertAll<char, int>(chars, c => (int) c);