您的位置:首页 > 其它

二进制长字符串转为大整数(16进制数)

2011-05-30 12:53 204 查看
下面我自己写的代码,把二进制的字符串转为一个大整数,因为本身这个二进制字符串表示的就是一个大整数。

#include <stdio.h>
#include <string.h>
#define BASE '0'
int byte2hex(const char src[], unsigned char dst[], int *length)
{
int i,j,k;
unsigned char temp[8];
if(*length%8 != 0)
{
printf("Length error,length%8 should be 0!/n");
return -1;
}
for(i=0,k=0; i< *length; i++)
{
j = i % 8;
temp[j] = ((src[i] - BASE) << (7-j));
if(j == 7)
dst[k++] = temp[0]|temp[1]|temp[2]|temp[3]|temp[4]|temp[5]|temp[6]|temp[7];
}
*length = *length/8;
return 0;
}
int main()
{
char* srcx = "0000101011100100110001110111100110001010101000001111000100011001010001110001101111101110000100011000001001011011111001000110001000000010101110110111100111100010101001011000010001000100100101011110100101111100000001001111111101001101111100100101010010001010";
char* srcy = "0111110000000010010000001111100010001111000111001101010011100001011000110101001010100111001111000001011110110111111100010110111100000111001101010011111001010011101000010111011011010110100001001010100111111110000011000110101110110111100110001110100001010111";
unsigned char dst[32];
int length;
int rv, i;
length = strlen(srcx);
rv = byte2hex(srcx, dst, &length);
if(rv)
return -1;
for(i=0; i<length; i++)
printf("0x%02x,", dst[i]);
printf("/n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: