我面临一个棘手的问题。我想通过 C# 从 sqlite 数据库中读取数据。数据库中的数据字段具有一种 blob 类型。该字段包含由 Java 编写的 double 值(也有其他类型的值,例如 text 和 int)。我需要通过 C# 读取双精度值。
我很抱歉我在这个问题上犯了一个可怕的错误。我通过创建一个由从数据库读取的 blob 流初始化的 ByteBuffer 来读取 Java 中的双精度值。C# 中没有对应的 ByteBuffer 数据结构,所以我使用下面的代码从 8 字节流中获取双精度值。
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 字段中获得正确的双精度值。谁能给我一些关于如何将Java定义的二进制样式双值转换为C#双值的建议?
顺便说一句,由于 blob 字段压缩了很多其他类型的值,我无法更改数据库的结构。谢谢大家。