かなり複雑なので、説明する必要があります。
私は構造体を持っています。この構造体は長い間使用され、バイナリファイルの読み取り/書き込みに使用されていました。したがって、この構造体に新しいフィールドを追加したり、フィールドを削除したりすることはできません。しかし、この構造体を作成するとき、機能で再利用するために、この構造体にスペアを入れました。さて、この構造体は次のとおりです。
struct Entry {
int a;
int b;
....
char spare[4];
};
現在、構造体には 4 バイトあります。以下の 3 つの情報に基づいて ID エントリを作成する必要があります。
時刻: (月と年、年は YY、月は MM の形式)。
コード: エントリのコード。3 文字が含まれます。例: ABC。
値: エントリの値。float 型で、整数部と小数部に 4 つの数字が含まれます。例: 1.21、40.14 または 12.3。
上記の 3 つの情報に基づいて、4 バイトに適切に含まれる 1 つの ID エントリを作成する方法。おかげで多くの。
注:方法があります:
時間: 12/99 を 12*100+99 = 1299 にエンコードするとします。
コード: ABC を 'A' + 'B' + 'C' = 65 + 66 + 67 = 198 にエンコードするとします。
値: 40.25 を 40.14*100 = 4014 にエンコードすると仮定します。
その後、1299、198、4014 の 3 つの数字を次のようにエンコードします。
ID_Entry = (1299 * 10^7) + (198*10^4) + 4014 = 1299 198 4014 = 12.991.984.014. しかし、この ID_Entry は大きすぎて 4 バイトのスペアに収まりません
何か方法があるか、私の方法を改善してください。教えてください。助けてください。どうもありがとうございました。
P/S: ID を作成すると、同じ時間 (月 + 年) に重複することはできません。コードと値は重複しません。ts が同じでない場合、コードと値は重複する可能性があります。