C语言 将十六进制 EBCDIC 转换为字符 EBCDIC (iseries AS400)



我有这个命令,在我的Iseries(AS400(上将字符EBCDIC转换为十六进制,并且效果很好。

sprintf((char*)(codeHex),"%02X", input[loop]);   

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

现在我收到的信息具有以下格式:

char input[300] ="0x004C0x004F0x00430x004B0x00450x00440x0000..."; 
sprintf((char*)(VariableCharacterEBCDIC),"?..", input[loop]);

问候

与其构建自己的函数,不如使用操作系统 MI 级别内置的功能。

将十六进制转换为字符 (CVTHC(

将字符转换为十六进制 (CVTCH(

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

请注意,命名/描述有点不稳定,这里有一个备忘单......
CVTHC - 转换为十六进制 'A' => 'C1'CVTCH - 转换为字符 'C1' => 'A'

RPGLE原型看起来像这样:

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,您将传递几个字符指针和一个整数。 我只是不记得 C 相当于extproc('cvthc')

编辑 - C 原型由玩家 1st 提供

void cvthc(char* hexresult, char* charinp, int charnibbles); 
void cvtch(char* charresult, char* hexinp, int hexlen);

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

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

相关内容

  • 没有找到相关文章

最新更新