значит проблема небольшая, не могу найти оптимального алгоритма для трансформации большого буфера hexadecimal int'ов, в буфер string, получилась вот такая процедура (но естественно на выходе получаем всё перевёрнутым) ps. нужно для получения текстовой строки подписи из криптоалгоритмов Код (Text): const char hex_table[]="0123456789ABCDEF"; void _int2str(byte *in,UINT i_sz,char *out,UINT o_sz) { byte tmp1; if(i_sz == o_sz/2) { out[i_sz]='\0'; while(i_sz) { tmp1=*in++; out[--i_sz]=hex_table[tmp1 & 0x0F]; out[--i_sz]=hex_table[(tmp1 >> 4) & 0x0F]; } } }
никто не может ответить? сам написал, получилось вот что, буду очень рад услышать советы по оптимизации Код (Text): void _reverse(char *s) { unsigned char i,j; char c; i = 0; j = lstrlen(s) - 1; while(i < j) { c = s[i]; s[i] = s[j]; s[j] = c; i++; j--; } } void _int2str(byte *in,UINT i_sz,char *out) { byte tmp1; UINT x,y,z; char *out_temp; y=i_sz / 4; z=i_sz % 4; if(y != 0) { y--; do { out_temp=out; x=0; while(x != 4) { tmp1=*in++; *out++=hex_table[tmp1 & 0x0F]; *out++=hex_table[(tmp1 >> 4) & 0x0F]; x++; } *out='\0'; _reverse(out_temp); } while(y--); } if(z != 0) { out_temp=out; while(z--) { tmp1=*in++; *out++=hex_table[tmp1 & 0x0F]; *out++=hex_table[(tmp1 >> 4) & 0x0F]; } *out='\0'; _reverse(out_temp); } }