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

本文关键字:数组 新转换 转换 Int32 char 一种 简单 有没有 方法 | 更新日期: 2023-09-27 17:59:26

我正在编写一个C#程序,从一系列文本文件中清除扩展的ASCII字符(示例在我的输入字符串中)。这是我遇到的。虽然我可以在for循环中将char重铸为Int32,但我想看看是否有办法将数组重铸为Int32值?在一个完美的世界里,我想直接传递一个处理方法的Int32数组。现在,我正计划创建一个方法,它接受char数组并返回一个Int32数组。有没有一种更简单的方法可以做到这一点,类似于我在代码中包含的注释?

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();

我的计划B:

private Int32[] RecastCharArray(char[] array)
{
    Int32[] int32Value ;
    for (int i = 0; i < array.Length; i++) {
         int32Value[i] = array[i];
    }
    return int32Value;
}

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

您可以使用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值。

使用LINQ?

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

您可以使用Array.ConvertAll:

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