【问题标题】:Adding Hexadecimal values to get a resultant hexadecimal添加十六进制值以获得结果的十六进制
【发布时间】:2012-07-18 13:54:47
【问题描述】:

我想添加两个十六进制值来得到一个十六进制结果我已经编写了以下代码但是当我打印结果的值时,结果值是写入例如"abc" ->61+62+63=186 但是在写入jk ->6a+6b 时我应该得到一些东西像 d5 但它给出了 12

这是我写的代码:

我还将全局变量定义为

  char buffer[20];
  long int li ;

  for (int i = 0; i < length; ++i) {
      itoa(TextAlia[i], buffer, 16);
      li = li + atol (buffer);
  }

【问题讨论】:

  • 表示6a(十六进制)152(八进制)、1101010(二进制)和106(十进制)只是需要其适当上下文进行操作的符号。通常,标准数学函数仅适用于 十进制 表示,因此您需要将 数字表示 转换为十进制(并返回)。

标签: c++ wxwidgets hex


【解决方案1】:
li = li + atol (buffer);

atol 在第一个非数字(十进制)处停止。要解析十六进制表示,请使用

li += strtol(buffer, NULL, 16);

【讨论】:

    【解决方案2】:

    我在这里假设您有两个字符串“TextAlia”和“TextAlib”,每个字符串都包含一个十六进制数字的字符串表示形式。添加数字并生成十六进制字符串作为输出的一种典型方法:

    int a, b;
    sscanf(TextAlia, "%x", &a);
    sscanf(TextAlib, "%x", &b);
    printf("%x", a + b);
    

    然而,这并不是在 C 中添加十六进制数字的最快方法,也不是以典型的 C++ 风格编写的。

    【讨论】:

      【解决方案3】:

      试试看这个:Adding hexa values in C#

      或者试试这个:

      int value = Convert.ToInt32(hexString1, 16) + Convert.ToInt32(hexString2, 16);
      

      希望这会有所帮助。

      【讨论】:

      • 您可能将C++C# 混淆了?
      猜你喜欢
      • 2021-12-22
      • 2018-07-26
      • 1970-01-01
      • 2011-12-09
      • 2014-08-24
      • 1970-01-01
      • 2011-06-01
      • 2018-05-16
      相关资源
      最近更新 更多