[英]Finding highest value in array however with assigned numbers to characters
我有一個快速的問題
A = 10
B = 11
C = 12
D = 13
我有一個char數組“5623ADCB”
我想找到最大值D = 13,但是當我使用for循環查找最大數字時程序不識別D = 13。 相反,它輸出D的ascii值,我如何確保每次遇到D時,它會被識別為13而不是它的ascii值?
謝謝大家幫助
功能配方:制作從Char到Int的地圖 - 使用Max
:
static int Map(char c)
{
return Int32.Parse (c.ToString(), System.Globalization.NumberStyles.HexNumber);
}
var max = "5623ADCB".Select (Map).Max ();
在這種情況下得到你13
;)
如果您關注內存和性能,這是一個版本:
static int FindMax(string s)
{
s = s.ToUpper ();
var max = 0;
for (int i = 0; i < s.Length; i++) {
var v = Map (s [i]);
if (v > max)
max = v;
}
return max;
}
static int Map(char c)
{
if (c >= '0' && c <= '9')
return (int)c - (int)'0';
if (c >= 'A' && c <= 'E')
return (int)c - (int)'A' + 10;
throw new ArgumentOutOfRangeException ();
}
順便說一句:我不知道為什么你想要14
如果你想要D
為13 - 如果第一個是拼寫錯誤然后你必須改變上面的Map
函數(如果你不想得到幻想,那就是switch
) - as你的第一個定義與Hex所假設的完全相同。
你需要獲得更大的價值嗎?
var array = "5623ADCB".ToCharArray();
Console.WriteLine(array.Max());
或者,為了確保“D”被轉換為“13”,將其從十六進制轉換:
var array = "5623ADCB".ToCharArray();
Console.WriteLine(Convert.ToInt32(array.Max().ToString(), 16));
請注意Convert.ToInt32(string, int)
方法,該方法接收數字庫以轉換字符串表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.