将来自sqlite数据库的blob数据解码为人类可读的文本

时间:2019-04-17 14:19:59

标签: java sqlite blob

我有一个其中包含Blob数据的Sqlite数据库文件。 我只知道数据库中有Blob数据,而且知道预期的输出是什么。 Blob数据的预期输出应该是带有其他文本的Mac地址。

我尝试获取十六进制输出,但是并不能真正帮助我获取数据库中已知的预期输出。我还使用了十六进制编辑器和sqlite查看器,但只显示乱码不可读的文本。

这里有一些代码,我试图从blob数据中获取字节,但没有产生我期望的输出。 Sqlite在Java中没有getBlob函数。

if (rs.next()) {
    byte[] buffer = rs.getBytes(1);
    System.out.println(buffer.toString());
}

blob的预期输出应为:“ JOHN A6:44:33:A4:G5:A4”

这里是示例十六进制转储0008f473eb41 e8ba3b1c

如何在sqlite中以编程方式检索blob数据并解码blob的内容?

1 个答案:

答案 0 :(得分:0)

现在,您正在打印byte[]数组toString()。 Java中的数组无法以有意义的方式实现。

您可以尝试使用以下方法将byte[]数组转换为String

new String(buffer, Charsets.UTF_8)

如果这不起作用,请使用rs.getBinaryStream(1)获取表示值的InputStream并按照this answer进行读取。