簡體   English   中英

有沒有一種簡單的方法將char []數組重新轉換為Int32 []?

[英]Is there a simple way to re-cast a char[] array as Int32[]?

我正在開發一個C#程序來從一系列文本文件中擦除擴展的ASCII字符(示例在我的輸入字符串中)。 這就是我遇到的問題。 雖然我可以在我的for循環中將char重新設置為Int32 ,但我正在嘗試查看是否有任何方法,將數組重新轉換為Int32值? 在一個完美的世界中,我想直接傳遞Int32數組的rocessing方法。 現在,我打算只創建一個接受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;
}

您可以使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM