如何将二进制数据从 MySQL 转换为 ColdFusion 11 中的字符串?

How do I convert binary data from MySQL to a string in ColdFusion 11?

我的 MySQL 数据库中有一个字段设置为数据类型 "BIT"。该字段中的值为 101101。我正在尝试使用 Coldfusion(版本 11)读取此值

我简单地使用了下面的代码:

<cfquery name=q1 datasource=#data_source#>
  select * from mytable
</cfquery>

<cfoutput>
 #q1.mybitfield#
</cfoutput>

我尝试在 MySQL 端使用 CAST 和 CONVERT,在 CF 端尝试使用 CharSetEncodeing 以及我能想到的 ToString、ToBase64 和 ToBinary 的每个选项。

我仍然无法让我的输出看起来像在数据库中那样。

感谢李的帮助。我永远无法只用一个步骤就让它工作,所以我使用了一个两步解决方案(如果你想这样称呼它的话)。我最终做的是设置我的 MySQL 语句以将字段转换为无符号整数(尽管十进制或带符号整数也可以),然后一旦我读入十进制值,我就可以将它转换使用您对 FormatBaseN(q1.myfield,2) 的建议转换为二进制文件。所以感谢FormatBaseN的提醒。我忘记了那个。

我的最终代码看起来像这样:

MySQL语句:

SELECT *, CONVERT(item , UNSIGNED) as di from mytable 

Coldfusion 看起来像这样:

<cfset d = FormatBaseN(q1.di, 2)>

编辑

写完这篇文章后,我决定采用上面 Leigh 的回答,因为这是一个更好的解决方案。

其实我可能在想SQL服务器的位类型。对于 MySQL,一个更简单的选择可能是使用 bin() 函数,其中:

Returns a string representation of the binary value of N, ...This is equivalent to CONV(N,10,2). Returns NULL if N is NULL.

例如:

  SELECT  bin(YourBitColumn) AS YourBitColumn FROM YourTable
  ... or 
  SELECT  bin(YourBitColumn+0) AS YourBitColumn FROM YourTable

注意:High-order 0 bits are not displayed in the converted value。这也适用于 CF 功能。