首页 新闻 会员 周边 捐助

C#怎么把很大的16进制字符串转换成十进制数字

0
[已解决问题] 解决于 2016-12-08 15:53

如题

例:

string hex="e10adc3949ba59abbe56e057f20f883e";
var number=MyConverter.Convert(hex,10);

请问各位大神这个Convert方法怎么写?

 

龙葛格的主页 龙葛格 | 小虾三级 | 园豆:782
提问于:2016-12-05 16:43
< >
分享
最佳答案
0

string str = "e10adc3949ba59abbe56e057f20f883e";
str = str.StringReverse(); //反转字符串

List<string> strList = new List<string>();

for (int i = 0; i < str.Length; i++)
{
strList.Add(str.Substring(i, 1));
}
//用一个list来存储
//第一开始用的是str.ToArray();这个是不行的,原因是char转换为int类型是字符对应的ascii码
var strArr = strList.ToArray();
double sum = 0.0;
for (int i = 0; i < strArr.Length; i++) {
if (strArr[i] == "a" || strArr[i] == "A") {
strArr[i] = "10";
}
if (strArr[i] == "b" || strArr[i] == "B") {
strArr[i] = "11";
}
if (strArr[i] == "c" || strArr[i] == "C") {
strArr[i] = "12";
}
if (strArr[i] == "d" || strArr[i] == "D") {
strArr[i] = "13";
}
if (strArr[i] == "e" || strArr[i] == "E") {
strArr[i] = "14";
}
if (strArr[i] == "f" || strArr[i] == "F") {
strArr[i] = "15";
}
sum = sum + Convert.ToInt32(strArr[i]) * Math.Pow(16, i);
}
Console.WriteLine(sum);

个人意见,互相交流

奖励园豆:5
GDOUJKZZ | 菜鸟二级 |园豆:315 | 2016-12-06 17:16
其他回答(2)
0

一个是4位.所以定义一个长度为字符串长度一半的字节数组.

然后从字符串最后一个字符开始.一次取2个字符.专程1个8bit的整数.放到字节数组最后一位.

酱紫.

吴瑞祥 | 园豆:29449 (高人七级) | 2016-12-05 17:01

感谢你提供的方法。转成字节数组后如何将其转换为整数?常用的Int16,Int32和Int64都不能存放这么大的数据。

支持(0) 反对(0) 龙葛格 | 园豆:782 (小虾三级) | 2016-12-06 17:00

@龙葛格: 长度为字符串长度一半的字节数组

这种不可能放长整型里的.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-12-06 17:42
0

var returnBytes = new byte[hexString.Length / 2];
for (var i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
return returnBytes;

花飘水流兮 | 园豆:13615 (专家六级) | 2016-12-05 17:15

感谢你提供清晰一度的代码,我明白你的意思,最近也查了一些资料。但是转成字节数组后如何将其转换为整数?常用的Int16,Int32和Int64都不能存放这么大的数据。我期望是以十进制数字的方式显示。而常用的数据类型转换方法都不支持转换这么大的数值

支持(0) 反对(0) 龙葛格 | 园豆:782 (小虾三级) | 2016-12-06 17:03

@龙葛格: 首先你要确定什么编码。比如是补码描述还是浮点描述...比如word和dword,dword在某个时期是通过“软”编码实现的,包括32位机处理long这些大于32位的都是自行处理的。比如c# 中 decimal类型是 128 位的,也就是你上面的长度,但是不一定出来的是你想要的ToString。假设你用UINT模式,无非按照10N的倍数分段ToString描述就行了。

支持(0) 反对(0) 花飘水流兮 | 园豆:13615 (专家六级) | 2016-12-06 22:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册