读书人

小算法,该如何解决

发布时间: 2012-04-23 13:17:38 作者: rapoo

小算法
有个byte数组:一共是32个元素,例如:31323334350000000000000000000000
哪位兄弟帮忙写个函数,转换成
0x31 0x32 0x33 0x34 0x35 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,这样结果一共是16个字节。。

快速结贴!



[解决办法]
int 吗?
void transe(char s[32],int dest[])
{
for(int i=0;i<16;i++)
sscanf(s+i*2,"%.2x",&dest[i]);
for(int j=0;j<16;j++)
{
printf("%#.2x ",dest[i]);
}
}
[解决办法]
int getval(char c)
{
if( c<='f' && c>='a' )
return c-'a'+10;
if( c<='F' && c>='A' )
return c-'A'+10;
return c-'0';
}
void transe(char s[32],int dest[])
{
for(int i=0;i<16;i++)
{
dest[i]= getval(s[2*i])*16+getval(s[2*i+1]);
}
for(int j=0;j<16;j++)
{
printf("%#.2x ",dest[i]);
}
}
[解决办法]

C/C++ code
int main(){    byte arr[32]={3,1,3,2,3,3,3,4,3,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};    int i = 0;    while(i<32)    {        unsigned short num = *((unsigned short *) (arr+i));        num = num << 8 | num >>4;        num=num>>4;        i+=2;        printf("0x%x\n", num);    }} 

读书人网 >C++

热点推荐