私はebcdicをasciiに変換するためのc ++コードを書いています
私のmain()は以下に示されています
int main()
{
char text[100];
int position;
int count;
printf("Enter some text\n");
cin >> text;
char substring[] = "\\x";
if(strlen(text) 2 != 0)
{
cout << "Length of the string is not even" << endl;
}
else
{
position = 1;
int len_string;
len_string = strlen(text)/2;
cout<<"len_string"<<len_string<<endl;
for (count = 0; count < len_string;count++)
{
insert_substring(text, substring, position);
printf("text is s\n",text);
position = position + 4;
}
}
ebcdicToAscii((unsigned char*)text);
cout << "Converted text" <<text << endl;
char str[]="\xF5\x40\x40\x40\x40\xD4"; //Hardcoded string
ebcdicToAscii((unsigned char*)str);
printf ("converted str is s\n", str);
return 0;
}
出力:
Enter some text
F54040404040D4
len_string7
text is \xF54040404040D4
text is \xF5\x4040404040D4
text is \xF5\x40\x40404040D4
text is \xF5\x40\x40\x404040D4
text is \xF5\x40\x40\x40\x4040D4
text is \xF5\x40\x40\x40\x40\x40D4
text is \xF5\x40\x40\x40\x40\x40\xD4
Converted text**?*?*?*?*?*
converted str is 5 M
変換する前に、文字列の前に \x を追加する必要があります
例:
F540404040D4
エスケープ シーケンスを挿入する必要があります \x
私はロジックを書いたので、出力を得ました:
\xF5\x40\x40/x40\x40\xD4
これで、ebcdic から ascii への変換が開始されます
ebcdicToAscii((unsigned char*)text);
しかし、私は望ましい出力を得ていません。
文字列を次のようにハードコーディングすると同時に
\xF5\x40\x40/x40\x40\xD4
出力は期待どおりです
すなわち5M
私は混乱しています。ガイドしてください。呼び出された関数が適切な戻り値を返すと仮定して、コード内に呼び出した関数を示していません。