首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将十六进制EBCDIC转换为字符EBCDIC (iseries AS400)

将十六进制EBCDIC转换为字符EBCDIC (iseries AS400)
EN

Stack Overflow用户
提问于 2019-11-22 21:58:41
回答 2查看 1.1K关注 0票数 1

在我的Iseries (AS400)上,我有一个将字符EBCDIC转换为十六进制的命令,它工作得很好。

代码语言:javascript
复制
sprintf((char*)(codeHex),"%02X", input[loop]);   

现在,我想做相反的命令,我的意思是..从十六进制代码,将其转换为字符EBCDIC,并将其移动到字符串char。我该怎么做呢?

现在我收到的信息格式是这样的:

代码语言:javascript
复制
char input[300] ="0x004C0x004F0x00430x004B0x00450x00440x0000..."; 
sprintf((char*)(VariableCharacterEBCDIC),"?..", input[loop]);

致以敬意,

EN

回答 2

Stack Overflow用户

发布于 2019-11-22 23:49:19

与其构建您自己的函数,不如使用内置于OS的MI级别的函数。

Convert Hex to Character (CVTHC)

Convert Character to Hex (CVTCH)

它们可以很容易地从IBM上的任何语言调用,包括C。

注意命名/描述有点不靠谱,这里有一个小抄...

CVTHC -转换为十六进制'A‘=> 'C1’

CVTCH -转换为字符'C1‘=> 'A’

RPGLE原型如下所示:

代码语言:javascript
复制
dcl-pr tohex extproc('cvthc');                 
  hexresult char(65534) options(*varsize);     
  charinp char(32767) const options(*varsize); 
  charnibbles int(10) value;                   
end-pr;                                        

dcl-pr fromhex extproc('cvtch');               
  charresult char(32767) options(*varsize);    
  hexinp char(65534) const options(*varsize);  
  hexlen int(10) value;                        
end-pr;                                        

所以对于C,你需要传递几个字符指针和一个整数。我就是想不起extproc('cvthc')的C等价物

Player1st提供的edit -C原型

代码语言:javascript
复制
void cvthc(char* hexresult, char* charinp, int charnibbles); 
void cvtch(char* charresult, char* hexinp, int hexlen);
票数 3
EN

Stack Overflow用户

发布于 2019-11-26 23:04:24

C原型在QSYSINC/MIH,成员CVTCH和CVTHC中。

对于RPG,您需要编写自己的原型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58995801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档