求助:AS400 如何能把数据转换成16进制并保存到数据库中

发布于 2022-08-29 20:05:54 字数 30 浏览 24 评论 9

求助:AS400 如何能把数据转换成16进制并保存到数据库中

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

心凉怎暖 2022-09-02 04:18:19

原帖由 huangxkst 于 2009-12-11 22:03 发表
你可以写一个c函数然后由sqlcobol调用,执行后不就可以返回你想要的信息了嘛!!!!

没有写过这样的程序,是否可以提供一下样例,谢谢了!

时光无声 2022-09-02 04:18:08

你可以写一个c函数然后由sqlcobol调用,执行后不就可以返回你想要的信息了嘛!!!!

锦上情书 2022-09-02 04:17:44

原帖由 法郎士 于 2009-12-7 16:21 发表
原来如此。如果只是调试时用的一次性的,你先用原来的方式存储,在用sql的hex()函数转换,再存在新的文件(或字段)中最方便啦。

还有别的方法吗?
这个方法还有一些限制。
因为要处理的文件是临时文件,在sql中引用后会报错误(5016)

妄断弥空 2022-09-02 04:17:38

用c语言当然就不用问了。。。
是在as400上的sqlcobol语言中

甜嗑 2022-09-02 04:17:03

这个BBS比较差,遇到 );后就把后面的东西变成斜体了!

我也只是我 2022-09-02 04:16:48

这么简单都不会?写个C语言的函数如下:
int  bin2hex(void *bin_str, int len, void *hex_str)
/*
   bin_str -- 二进制数据
   len -- 二进制数据长度
   hex_str -- 保存16进制的buffer指针
   例如:
   {0xba, 0x08, 0x7d, 0x40, 0x12, 0x34, 0x56, 0x78} -> "ba087d4012345678"
*/
{
  int  i, j;
  unsigned char *sb = (unsigned char *)bin_str, *sh = (unsigned char *)hex_str;

  for(i = 0, j = 0; i < len; i++, j+=2)
    sprintf((char *)sh+j, "%02X", sb);
  sh[j] = 0;
  return j;
}

加密后的密码可用此方法保存到配置文件或数据库表中,免得出现乱码、不可见字符等影响阅读、使用

奢华的一滴泪 2022-09-02 04:05:27

原来如此。如果只是调试时用的一次性的,你先用原来的方式存储,在用sql的hex()函数转换,再存在新的文件(或字段)中最方便啦。

[ 本帖最后由 法郎士 于 2009-12-7 16:23 编辑 ]

悲歌长辞 2022-09-02 03:39:29

原帖由 法郎士 于 2009-12-7 15:28 发表
你是指十六进制字符串如:

‘0E586455BE514B5C6F4E8D4DCE54FC4DCE59BA0F404040404040‘

这样?这样做有什么意义呢?这样存储浪费一倍的空间,转回来又麻烦。

对,是这样的。
最后要与interface的数据比较。

笑看君怀她人 2022-09-02 01:45:20

你是指十六进制字符串如:

‘0E586455BE514B5C6F4E8D4DCE54FC4DCE59BA0F404040404040‘

这样?这样做有什么意义呢?这样存储浪费一倍的空间,转回来又麻烦。

[ 本帖最后由 法郎士 于 2009-12-7 15:30 编辑 ]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文