📄 asc2bcd.cpp
字号:
// Asc2BCD.cpp: implementation of the CAsc2BCD class.
//
//////////////////////////////////////////////////////////////////////
#include "Asc2BCD.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#define RIGHT_ALIGN 1
#define LEFT_ALIGN 2
/*
Convert an ASCII/EBCDIC number string to BCD string
Return the BCD string length
"12345" -> 0x01,0x23,0x45 (right alignment)
"12345" -> 0x12,0x34,0x50 (left alignment)
If error, return -1
*/
int CAsc2BCD::Asc2BCD(char *Nstr, int Nstr_len, char *BCDstr, int align)
{
int i, j, n;
char *sn = Nstr, *sb = BCDstr;
n = (Nstr_len + 1) / 2; //字节数
if(align == RIGHT_ALIGN)
{
for(i = Nstr_len - 1, j = n - 1; j >= 0; j--)
{
if(i >= 0)//低字节
{
if(sn[i] < '0'||sn[i] > '9') return -1;
sb[j] = sn[i] - '0';
i--;
}
if(i >= 0)//高字节
{
if(sn[i] < '0'||sn[i] > '9') return -1;
sb[j] = (sn[i] - '0') << 4|sb[j];
i--;
}
}
}
else /* LEFT_ALIGN */
{
for(i = 0, j = 0; i < Nstr_len; i++, j++)
{
if(sn[i] < '0'||sn[i] > '9') return -1;
sb[j] = (sn[i] - '0') << 4;
i++;
if(i < Nstr_len)
{
if(sn[i] < '0'||sn[i] > '9') return -1;
sb[j] = sb[j]|(sn[i] - '0');
}
}
}
return n;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -