我在 C 中创建了一个动态类型系统,以便创建一个可以包含不同位宽值的字典。动态对象的结构是:
typedef struct
{
void* Pointer;
unsigned char Size;
} Dynamic;
我需要比较其中两个保存 A2D 读数的 Dynamics,然后将差异与 delta 值进行比较,以确定是否发生了变化。我能够想出的一种解决方案是将它们转换为 char 数组并逐字节比较它们,但这并不正确。我还有一个想法,即根据 Dynamics 占用的字节数(或者可能是类型)创建一个函数指针数组,并为每种支持的类型创建一个比较函数。任何人都可以提出不同的方法吗?感觉就像我错过了什么。
更新:
感谢您告诉我有关 memcmp 的信息,但我仍然有如何获得这两个值的增量的问题?据我所知,memcmp 只是返回一个指示哪个值更大的指标,而不是它们之间的差异。
更新到更新:
事实证明 memcmp 对我没用,因为我正在编译的架构是小端。
如果我要自己做一个 bignum 实现,那么 ephemient 感觉是正确的方法,但我决定我只是将值 memcpy 到我必须处理的最大可能类型(即 unsigned long long)中并使用它们进行数学运算。我想不出任何为什么这不起作用,但我认识到我可能是非常错误的,因为 C / 直接内存操作不是我的强项。