简单地将十六进制部分转换为数字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;

简单地将十六进制部分转换为数字c#

使用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);