私は難しい問題に直面しています。C# で sqlite データベースからデータを読み込みたい。データベースのデータ フィールドのタイプは BLOB です。このフィールドには、Java によって記述された double 値 (text や int などの他の型の値も含まれます) が含まれます。C# で double 値を読み取る必要があります。
質問で大変なミスをしてしまい申し訳ありません。データベースから読み取られるブロブストリームによって初期化された ByteBuffer を作成することにより、Java で double 値を読み取ります。また、C# には対応する ByteBuffer データ構造体がないため、以下のコードを使用して 8 バイト ストリームから double 値を取得します。
public double getDouble()
{
if(CURRENT_POSITION + 7 >= CURRENT_LENGTH)
{
return 0;
}
double ret = (double)(TEMP_BYTE_ARRAY[CURRENT_POSITION + 7] << 56 |
TEMP_BYTE_ARRAY[CURRENT_POSITION + 6] << 48 |
TEMP_BYTE_ARRAY[CURRENT_POSITION + 5] << 40 |
.....
);
return ret;
}
しかし、同じコードを使用して C# で blob フィールドから正しい double 値を取得できません。Java で定義されたバイナリ スタイルの double 値を C# の double 値に変換する方法について、誰かアドバイスをもらえますか?
ところで、blob フィールドは他の多くの型の値を圧縮しているため、データベースの構造を変更することはできません。よろしくお願いします。