是否有現成的函數可以在c#中進行基礎轉換?我期待從基數26和底數基數27轉換爲基數10.我可以在紙上做,但我不是一個非常有經驗的程序員,如果可能的話,不要從頭開始。謝謝!在C#中將base-27(或base-X)轉換爲base-10?
4
A
回答
3
有一個現成的功能,可將數字從基數2,8或16轉換爲基數10(Convert.ToInt32
)。如果你想將數字從基數26或基數27轉換爲基數10,你必須自己動手。
現在,我從來沒有聽說過基數26的數字,所以我只是假設'數字'是A到Z(A的值爲0,Z的十進制值爲25)。從基部26轉換爲10進制,你應該做到以下幾點:
string charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int GetDigitValue(char digit)
{
return charset.IndexOf(digit);
}
int ConvertFromBase26(string number)
{
int result = 0;
foreach(char digit in number)
result = result * charset.Length + GetDigitValue(digit);
return result;
}
從基地27轉換,只需添加任何字符代表26
注:有沒有糾錯(你可以轉換字符串「$#$ @#$ @」這會給你一個不錯的負數),而GetDigitValue效率很低,如果你打算做這些轉換,應該用查找表替換。
編輯:一個LINQ版本,只是踢。
再次,沒有有效的查找和糾錯,假設字符串只包含合法數字。
string charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int ConvertFromBase(string charset, string number)
{
return number.Select(c=>charset.IndexOf(c)).Aggregate(0, (x, y) => x*charset.Length +y);
}
我想到的第一個版本更具可讀性,雖然。
0
建立你的答案。您不需要字符集查找列表,因爲您只需使用char ASCII值即可。
int ConvertFromBase26(string number)
{
return number.Select(digit => (int)digit - 64).Aggregate(0, (x, y) => x * 26 + y);
}
我用這個在用Excel編程時將列字符串地址轉換爲int。
相關問題
- 1. 在Perl轉換base10到base36
- 2. 如何從Base36轉換爲Base10在JS
- 3. 轉換消化以base10
- 4. 清潔,將HTML轉換成XML的BaseX
- 5. 如何將base10數字轉換爲數組
- 6. 將GLSL轉換爲C或C++
- 7. 將Java轉換爲C#或VB.net到C#
- 8. 將Fortran轉換爲C或C++
- 9. 轉換32位二進制base10
- 10. 將char轉換或轉換爲Objective-C中的NSString
- 11. 在C/C++中將int轉換爲bool
- 12. 將C++轉換爲Delphi,或者轉換爲dll
- 13. 將VBscript轉換爲VB.Net或C#.net
- 14. 將php塊轉換爲vbnet或c#
- 15. WPF或C#將Html轉換爲Doc
- 16. C++將unicode CString或wchar_t轉換爲LPBYTE
- 17. 將curl轉換爲vb.net或c webrequest#
- 18. Objective-C:將NSData轉換爲int或char
- 19. BaseX XQuery替換
- 20. 從base8轉換爲base10時的反向答案
- 21. 將DOC文件轉換爲c#或php或.net中的DOCX
- 22. 將c#RSACryptoServiceProvider轉換爲C++
- 23. 將QT/C++轉換爲C#
- 24. 將C++轉換爲objective-c
- 25. 將C++/CLI轉換爲C#
- 26. 在C#中將對象{double [,]}轉換爲double [,]或int [,] .net
- 27. 在iOS objective-c(xcode)中將PPT或PPTX轉換爲PDF
- 28. 在C#或Java中將音頻文件轉換爲文本
- 29. 在C中將UNICODE_STRING轉換爲ANSI或反之亦然
- 30. 如何在C#中將'system.windows.media.imagesource'類型轉換爲'system.drawing.image'或byte []?
「你試過什麼」? (希望看到一個嘗試,即使沒有完全正常工作,因爲可以討論具體細節並且已經展示了工作。) – 2012-03-04 21:50:56
另外,考慮查看*現有* base64編碼器/解碼器;它只是在數學上略有不同(而不是'/'或'%'64,'/'或'%'27等),但這個想法是一樣的。 – 2012-03-04 21:52:10
pst:我還沒有嘗試過任何東西,因爲如果有東西存在,我不想寫它。我不是以任何方式要求完成代碼,我只是尋找一些方向。謝謝! – miltonjbradley 2012-03-04 21:57:41