【问题标题】:I would like to know what the hex values mean in the following structure我想知道以下结构中的十六进制值是什么意思
【发布时间】:2020-11-25 01:46:29
【问题描述】:

我正在发现 c 代码固件并遇到以下结构:

static void test_db_hd_fill_full(void)
{
    uint32_t err_code;
    uint16_t indexCount;
    rb_historical_data_t hd = {
            .time       = 0xAAAAAAAA,
            .max        = 0xBBBB,
            .min        = 0xCCCC,
            .Count      = 0x1111,
            .distance   = 0x2222,
            .activityTime   = 0x3333
    };

对于某些情况...固件有一个数据库,用于存储物理设备上的变量数据。

我想知道这个结构中的十六进制值代表什么。它是否代表特定变量的内存区域的开始?如果我要删除所有变量并仅用一个变量替换它...该变量将分配什么十六进制值?

【问题讨论】:

  • 你只需要查找rb_historical_data_t结构的定义。它们似乎不是内存区域,而只是使用十六进制表示法初始化的整数。具体来说,时间是一个 32 位整数(uint32_t 如果无符号),所有其他字段都是 16 位整数。
  • @RobertoCaboni 的解释对我来说是正确的。它们不太可能是有意义的值,因为 (1) 如果 min 和 max 是无符号的 16 位整数,则 max 的值低于 min,并且 (2) 如果它们是有符号的 16 位整数,那么这些值是负数,这似乎也不太可能。所以可能它们就在那里,以便在固件调试时这些值很容易被识别为已初始化(正如@Barmar 的回答所说。)

标签: c embedded firmware


【解决方案1】:

我认为它们不代表任何东西。它们看起来只是易于识别的值,可在调试时用于判断结构成员何时未填充实际值。

【讨论】:

    猜你喜欢
    • 2019-07-30
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 2020-06-18
    • 1970-01-01
    • 2021-11-11
    相关资源
    最近更新 更多