这个和之前的还不一样,因为利用的是另一个核心支持库-外部数据库。
下面源码举例展示了读取字节集以及将字节集转换为十六进制的文本的方法。请自行揣摩。

.版本 2
.支持库 spec
.程序集 窗口程序集1
.子程序 __启动窗口_创建完毕
.局部变量 SQL句柄, 整数型
外部数据库1.打开 (“DRIVER=SQL Server;SERVER=” + “(local)” + “;UID=” + “sa” + “;PWD=” + “123456” + “;DATABASE=” + “drgame”, , )
SQL句柄 = 外部数据库1.查询 (“select strAccount,strItem from USER_BANK”)
调试输出 (外部数据库1.读 (SQL句柄, “strItem”))
SQL句柄 = 外部数据库1.查询 (“SELECT sWIS, strItem FROM GameUser”)
调试输出 (字节集到十六进制文本 (外部数据库1.读 (SQL句柄, “strItem”), 假, 假))
外部数据库1.关闭 ()

.子程序 字节集到十六进制文本, 文本型
.参数 转换的数据, 字节集
.参数 是否显示地址, 逻辑型
.参数 是否显示源数据文本, 逻辑型
.局部变量 nc, 整数型, , , 循环变量
.局部变量 结果文本, 文本型
.局部变量 text, 文本型, , , 一行文本
.局部变量 Rtext, 文本型, , , 右侧文本
.计次循环首 (取字节集长度 (转换的数据), nc) ' 根据字节集长度确定循环次数
text = text + “ ” + 填充重复文本 (取十六进制文本 (转换的数据 [nc]), 2, “0”) ' 存放主要数据
.如果真 (是否显示源数据文本)
.如果真 (转换的数据 [nc] < 32) ' 如果该字节ASCII>32
转换的数据 [nc] = 46 ' 转换成原点符号形式显示
.如果真结束
Rtext = Rtext + 字符 (转换的数据 [nc])
.如果真结束
.如果真 (nc % 16 = 0) ' 每行16个字节
.如果真 (是否显示地址)
text = 填充重复文本 (取十六进制文本 (nc - 16), 4, “0”, ) + “ | ” + text
.如果真结束
.如果真 (是否显示源数据文本)
text = text + “ | ” + Rtext
.如果真结束
结果文本 = 结果文本 + text ' 满一行就插入回车符并添加到结果文本中
' 清空变量
text = “”
Rtext = “”
.如果真结束
.计次循环尾 ()
' 最后一行有可能数据刚好不能被16整除,则不满足条件i%16=0,所以要补上最后的一段
.如果真 (text ≠ “”)
.如果真 (取文本长度 (text) < 48)
text = 填充重复文本 (text, 48, “ ”, 假)
.如果真结束
.如果真 (是否显示地址)
text = 填充重复文本 (取十六进制文本 (nc - nc % 16), 4, “0”, 真) + “ | ” + text
.如果真结束
.如果真 (是否显示源数据文本)
text = text + “ | ” + Rtext
.如果真结束
结果文本 = 结果文本 + text
.如果真结束
返回 (结果文本)
.子程序 填充重复文本, 文本型, , 将文本的左侧或右侧添加字符到指定的长度
.参数 参原始文本, 文本型
.参数 参要达到的长度, 整数型
.参数 参填充的字符, 文本型, 可空, 取第一个字符
.参数 参在左侧, 逻辑型, 可空, 不在左侧就在右侧
.局部变量 要增加的长度, 整数型
.局部变量 字符, 文本型
.局部变量 文本, 文本型
.如果真 (是否为空 (参填充的字符))
参填充的字符 = “ ” ' 默认使用空格填充
.如果真结束
.如果真 (是否为空 (参在左侧))
参在左侧 = 真 ' 默认填充左侧
.如果真结束
.如果真 (参填充的字符 = “”)
返回 (参原始文本)
.如果真结束
要增加的长度 = 参要达到的长度 - 取文本长度 (参原始文本)
.如果真 (要增加的长度 ≤ 0)
返回 (参原始文本)
.如果真结束
字符 = 取文本左边 (参填充的字符, 1) ' 只要第一个字符
文本 = 取重复文本 (要增加的长度, 字符)
.如果真 (参在左侧)
返回 (文本 + 参原始文本)
.如果真结束
返回 (参原始文本 + 文本)

Related Posts: 易语言-sql server读取字节集的办法 :