小算法
有个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); }}