小编H20*_*019的帖子

如何将十六进制转换为十进制?

我有不同的十六进制数据即将到来并存储到一个整数类型寄存器中。

当我使用 fprint 时,我可以看到以下内容:

0x3076
0x307c
.
.
.
Run Code Online (Sandbox Code Playgroud)

但是,我想显示上述十六进制数据的十进制版本,如下所示。

12406
12412
.
.
.
Run Code Online (Sandbox Code Playgroud)

理论上,假设第一个值您执行以下操作将其转换为十进制。

(6* 16^0)+(7 * 16^1)+(0*16^2)+(3*16^3)=6 + 112+ 0 + 12288 = 12406
Run Code Online (Sandbox Code Playgroud)

因此,如果我有“0x3076”的基于字符的版本,而且,如果我能够获得每个单个字符 6 - 7 - 0 - 3,我可以计算十进制数量!

所以,我决定将“3076”除以 1000。我原本希望得到 3,但我得到了两个字符!但是,如果我能够为“307c”的其余部分获得 3,我将无法获得“C”。如果它是十进制的,这可能不是十六进制的!

另外,我尝试了“ strtol”命令。当我使用 Cygwin 编译我的代码时,我不确定错误在哪里!我做错了什么?

所以,我只需要找到一种方法来从 HEX 数据中获取每个单个字符!

请问有什么想法吗?

聚苯乙烯

这是我的代码,以帮助您给我一个想法。

   int get_readings(int source, int phase, int max_tries)
{
    uint8_t buf[MAX_IEC1107_MSG_BODY];
    uint8_t inbuf[MAX_IEC1107_MSG_BODY];
    int inlen;
    uint8_t *s;
    int32_t value;
    int status;
    double voltage;
    double current;
    double active_power;
    double reactive_power;
    double apparent_power; …
Run Code Online (Sandbox Code Playgroud)

c hex cygwin decimal

3
推荐指数
2
解决办法
4万
查看次数

标签 统计

c ×1

cygwin ×1

decimal ×1

hex ×1