異なるビット幅の値を含むことができる辞書を作成するために、C で動的型付けシステムを作成しました。動的オブジェクトの構造は次のとおりです。
typedef struct
{
void* Pointer;
unsigned char Size;
} Dynamic;
A2D 読み取り値を保持するこれらのダイナミクスのうちの 2 つを比較し、その差をデルタ値と比較して、変化が発生したかどうかを判断する必要があります。私が思いついた解決策の 1 つは、それらを char 配列にキャストし、バイトごとに比較することですが、それは正しくありません。また、Dynamics が占めるバイト数 (またはおそらく型) に基づいて関数ポインターの配列を作成し、サポートされている型ごとに比較関数を作成するというアイデアもあります。誰かが別のアプローチを提案できますか? 何かが足りないような気がします。
アップデート:
memcmp について教えていただきありがとうございます。しかし、2 つの値のデルタを取得するにはどうすればよいかという問題がまだ残っています。私が知る限り、 memcmp はどちらの値が大きいかの指標を返すだけであり、それらの差ではありません。
更新する更新:
私がコンパイルしようとしているアーキテクチャがリトル エンディアンであるため、memcmp は役に立たないことがわかりました。
自分で bignum の実装を行う場合は、ephemient が正しい方法のように感じますが、値を可能な限り最大の型 (つまり、unsigned long long) に memcpy することに決めました。それらを使って計算するだけです。これが機能しない理由は思いつきませんが、C/直接メモリ操作は私の得意分野ではないため、非常に間違っている可能性があることは認識しています。