将手机号码或加密后的字符串进行BCD编码后在网络上传输,如果有大量此类型的数据,可以减少传输的数据量。
该算法针对字符串中含“0123456789abcdefABCDEF”字符串进行BCD编码。
1.[代码][C/C++]代码
#include
#include
int strTobcd(unsigned char *dest, const char *src)
{
int i;
unsigned char hbit,lbit;
int len = strlen(src);
for(i = 0; i < len; i+=2)
{
hbit = (src[i] > '9') ? ((src[i] & 0x0F) + 9) : (src[i] & 0x0F);
lbit = (src[i+1] > '9') ? ((src[i+1] & 0x0F) + 9) : (src[i+1] & 0x0F);
dest[i/2] = (hbit << 4) | lbit;
}
return 0;
}
int main(int argc, char *argv[])
{
int j;
const char *sha256 = "b81c8201acfc7639be3bd3d7f875ba5ca76e422fa2163cec9dace50662b637a7";
unsigned char dest[64];
memset(dest, 0, sizeof(dest));
strTobcd(dest, sha256);
for(j = 0; j < 64; j++)
{
if(j && !(j%8)) printf(" ");
if(j && !(j%16)) printf("\n");
printf("%02x ", dest[j]);
}
printf("\n");
return 0;
}