使用SQLite将十六进制转换为文本

taz*_*taz 3 sqlite hex ascii casting

我正在尝试使用纯SQLite语言将表示十六进制数据的字符串转换为十六进制数据的文本编码(ASCII,UTF-8等).本质上我想要X'[hex]'语法的功能,但应用于以编程方式派生的十六进制字符串.

我想,例如,select X(hex_data_string) from ...这不是合法的SQLite语法.

显然在上面的代码片段中,如果数据不是有效的文本编码,我不一定能够输出数据.也就是说,如果hex_data_string包含控制字符等,则X()应该以某种方式失败.如果这是可能的,则必须有默认的字符编码,或者必须以某种方式指定所需的字符编码.

不是在询问如何从SQLite数据库中检索十六进制数据字符串值,然后使用C或其他工具来转换它.我试图在纯SQLite中执行此转换,因为我检查了哪些查询返回表示二进制数据的十六进制字符的文本表示.大多数二进制数据都是ASCII,因此我希望能够在适用时快速查看查询输出中二进制数据的内容.

直觉上,我认为这可以通过将十六进制数据字符串转换为blob并使用hex()但仍然返回十六进制数据字符串来实现.

有任何想法吗?

可能重复:

SQLite X'...'用列数据表示法

sqlite char,ascii函数

Mla*_*vic 6

这是相当古老但我正在寻找相同的东西,所以我想我会发布:

您似乎可以将十六进制数据转换为varchar以将其转换为ascii.

ie: select cast(data as varchar) from some_table将返回二进制字段(数据)的字符串表示.