是否有现成的函数可以在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. 如何从Base36转换为Base10在JS
- 2. 转换消化以base10
- 3. 清洁,将HTML转换成XML的BaseX
- 4. 如何将base10数字转换为数组
- 5. 将Fortran转换为C或C++
- 6. 将Java转换为C#或VB.net到C#
- 7. 将char转换或转换为Objective-C中的NSString
- 8. 在C/C++中将int转换为bool
- 9. WPF或C#将Html转换为Doc
- 10. 将php块转换为vbnet或c#
- 11. 将C++/CLI转换为C#
- 12. 将QT/C++转换为C#
- 13. 在iOS objective-c(xcode)中将PPT或PPTX转换为PDF
- 14. 在C中将UNICODE_STRING转换为ANSI或反之亦然
- 15. 如何在C#中将'system.windows.media.imagesource'类型转换为'system.drawing.image'或byte []?
- 16. 在C++中将char *转换为const char *
- 17. 在C++中将PEM转换为DER
- 18. 在c#中将double [?]转换为object []#
- 19. 在C++中将float转换为std :: string
- 20. 在C++中将UTF-8转换为ANSI
- 21. 在C#中将字节转换为GB?
- 22. 在C++中将长转换为CString
- 23. 在C#中将IntPtr转换为int *?
- 24. 在C++中将.docx转换为.txt
- 25. 在C#中将小时转换为天#
- 26. 在C++中将JSON转换为CSV
- 27. 在'C'中将int转换为int []
- 28. 在C中将ObjectParameter转换为Int#
- 29. 在Objective-C中将CGPoint转换为GLKVector2
- 30. 它能够将api转换为IPA或将java转换为对象c/swift?
“你试过什么”? (希望看到一个尝试,即使没有完全正常工作,因为可以讨论具体细节并且已经展示了工作。) – 2012-03-04 21:50:56
另外,考虑查看*现有* base64编码器/解码器;它只是在数学上略有不同(而不是'/'或'%'64,'/'或'%'27等),但这个想法是一样的。 – 2012-03-04 21:52:10
pst:我还没有尝试过任何东西,因为如果有东西存在,我不想写它。我不是以任何方式要求完成代码,我只是寻找一些方向。谢谢! – miltonjbradley 2012-03-04 21:57:41