COBOL数据类型 S9(9) COMP十六进制存储方式。
S9(4) COMP 以下 2 byte
S9(5) COMP – S9(9) COMP 4 byte
S9(10) COMP 以上 5 byte
需求:文件格式转换。 使得AIX db2 export数据和mainframe db2 unload数据一致。
AIX db2 export文件格式:1,132000,”abc”
mainframe db2 unload文件格式:00 00 00 01 00 02 03 A0 41 42 43
unload需要通过binary方式来进行,才能得到上面的数据存储。但是这样的话,”abc”的内容便不是上面列出的那样了。
文本方式读入export
string snum = “132000”;
int num = atoi(snum.c_str()); 此时,num的内容为 A0 03 02 00
以binary方式写入fstream
fs << (char*)&num ; 内存中存储 A0 03 02 00
这种方式和CPU是按先高位后低位,还是先低位后高位有关系。
通过本函数的转换可以实现 00 02 03 A0
位与FF保存需要的byte, 00清空不需要的byte。移位时被移掉的位会被清零。
中间变量nbyte可以被去掉
short num = atoi(strNum); num = ((num << 8) & 0xff00) | ((num >> 8) & 0x00ff);
便能够得到想要的结果