エンコードとデコードをそれぞれ実装する 2 つの関数があります。
void
delta_encode (char *buffer, const unsigned int length)
{
char delta = 0;
char original;
unsigned int i;
for (i = 0; i < length; ++i)
{
original = buffer[i];
buffer[i] -= delta;
delta = original;
}
}
void
delta_decode (char *buffer, const unsigned int length)
{
char delta = 0;
unsigned int i;
for (i = 0; i < length; ++i)
{
buffer[i] += delta;
delta = buffer[i];
}
}
それらについて私が気に入らない点は、+= と -= の部分を除いて、それらが非常に似ているということです。それらを 1 つの関数に統合する方法はありますか?ユーザーにエンコードまたはデコードのどちらを行うかを尋ね、それぞれ -= または += バージョンを選択します。存在する場合、そのコードはどのようになりますか? これを行う方法がいくつかある場合、どれが最適ですか?