您的位置:首页 > 其它

Ascll字符串转换到二进制字符串

2017-03-27 23:40 190 查看
上一章说到二进制字符串转换到Ascll字符串的方法,本章按照同样的原理来说下Ascll字符串转换到二进制字符串的方法。

函数定义如下:

int AscllToBinary(char* dst,const void* src,int low,int len);


代码实现如下:

//第一个参数表示输出转换二进制字符串 空间大小为len长度的8倍
//第二个参数表示输入字符串(Ascll)
//第三个参数表示是否采用地位在前高位在后 :0表示高位在前(高位第一位是128) ,  1表示低位在前(地位第一位1) (二进制以11111111 的形式 左高右低计算)
//第四个参数表示需要转换的Ascll字符串的长度
int AscllToBinary(char* dst,const void* src,int low,int len)
{
if (0 == src || 0 >= len)
{
return -1;
}
const unsigned char* psrc = (const unsigned char*)src;
char* pdst = dst;//如果采用地位在前保存,负责转换位置
char valstr[8] = {0};
int nNum = 0;
for (int i = 0; i < len;i++)
{
int nval = *(psrc + i);
for (int it = 1;it < 9;it++)
{
//由于用到了计算次方的函数pow 所以要加上#include<math.h>头定义
if (nval >= 256 / pow((double)2,it))
{
valstr[it - 1] = '1';
nval -= 256 / pow((double)2,it);
}
else
{
valstr[it - 1] = '0';
}
}
if (!low)//从高位向地位
{
for (int ival = 0;ival < 8;ival++)
{
pdst[nNum++] = valstr[ival];
}
}
else//从低位到高位
{
for (int ival = 7;ival >= 0;ival--)
{
pdst[nNum++] = valstr[ival];
}
}
}
return nNum;
}


实现原理:
1.由于一个Ascll unsignal char字符表示0-255数字,那么由一个Ascll字符转换为8个二进制字符。
2.增加了二进制字符的转换保存方向,low值用来决定方向。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 二进制 dst Ascll