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);
个人意见,互相交流
一个是4位.所以定义一个长度为字符串长度一半的字节数组.
然后从字符串最后一个字符开始.一次取2个字符.专程1个8bit的整数.放到字节数组最后一位.
酱紫.
感谢你提供的方法。转成字节数组后如何将其转换为整数?常用的Int16,Int32和Int64都不能存放这么大的数据。
@龙葛格: 长度为字符串长度一半的字节数组
这种不可能放长整型里的.
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;
感谢你提供清晰一度的代码,我明白你的意思,最近也查了一些资料。但是转成字节数组后如何将其转换为整数?常用的Int16,Int32和Int64都不能存放这么大的数据。我期望是以十进制数字的方式显示。而常用的数据类型转换方法都不支持转换这么大的数值
@龙葛格: 首先你要确定什么编码。比如是补码描述还是浮点描述...比如word和dword,dword在某个时期是通过“软”编码实现的,包括32位机处理long这些大于32位的都是自行处理的。比如c# 中 decimal类型是 128 位的,也就是你上面的长度,但是不一定出来的是你想要的ToString。假设你用UINT模式,无非按照10N的倍数分段ToString描述就行了。