简单地将十六进制部分转换为数字c#
本文关键字:数字 转换 十六进制部 简单 | 更新日期: 2023-09-27 18:04:17
如何将十六进制字符串转换为数字并以简单的方式计算总和
我想每秒钟截断一个字符串char --> BB6050C9 --> BB|60|50|C9
String shex = "BB6050C9";
int sum;
与hex. substring(....)我可以切断字符串,但我怎么能把字符串转换成一个数字,并以一种简单的方式求和?
0xBB=187, 0x60=97, 0x50=80, 0xC9=201,
sum=187+97+80+201;
使用SoapHexBinary。解析Value
属性返回的字节数并求和。
var shb = SoapHexBinary.Parse("BB6050C9");
var sum = shb.Value.Sum(x => x);//returns 564
写下下面的代码:-
var output = 0;
string input = "BB6050C9";
char[] values = input.ToCharArray();
foreach (char letter in values)
{
// Get the integral value of the character.
int value = Convert.ToInt32(letter);
// Convert the decimal value to a hexadecimal value in string form.
string hexOutput = String.Format("{0:X}", value);
Console.WriteLine("Hexadecimal value of {0} is {1}", letter, hexOutput);
output += Convert.ToInt32(hexOutput);
}
Console.WriteLine(output);
Console.ReadKey();
String str = "BB6050C9";
const int chunkSize = 2;
var sum = Enumerable.Range(0, str.Length / chunkSize)
.Select(x => str.Substring(x * chunkSize, chunkSize))
.Sum(x => int.Parse(x, System.Globalization.NumberStyles.HexNumber));
Console.WriteLine(sum);
给定一个十六进制字节字符串(即2个字符),则值为:
16 * "0123456789abcdef".IndexOf(hex.ToLower()[0]) + "0123456789abcdef".IndexOf(hex.ToLower()[1])
您可以使用正则表达式拆分字符串,使用Convert.ToInt32
解析数字,并像这样将值相加:
int sum = Regex.Matches(shex, "..").Cast<Match>()
.Select(m => Convert.ToInt32(m.Value, 16))
.Sum();
String hex = "BB6050C9";
int i = 0;
long sum = 0;
while (i + 2 <= hex.Length)
{
sum += Convert.ToInt64(hex.Substring(i, 2), 16);
i += 2;
}
Console.WriteLine(sum);