void urg_decode(unsigned char *buf, int *res) { int k; int i,idx,j=0; unsigned char data[2]; char startIdx=47; // era 26 for (k=0; k<21; k++) { idx = startIdx + k*66; for (i=0;i<64;i+=2) { data[0]=buf[idx + i]; data[1]=buf[idx + i+1]; res[j] = char_decode(data, 2); j++; } } idx = startIdx + 21*66; for (i=0;i<20;i+=2) { data[0]=buf[idx + i]; data[1]=buf[idx + i +1]; res[j] = char_decode(data, 2); j++; } }
int main() { char s[BUFFER_SIZE]; memset(s, '\0', BUFFER_SIZE); strcpy(s, S1); char_encode(s, ' ', ENCODE_SEQ); assert(strcmp(s, SE1) == 0); strcpy(s, S2); char_encode(s, ' ', ENCODE_SEQ); assert(strcmp(s, SE2) == 0); strcpy(s, S3); char_encode(s, ' ', ENCODE_SEQ); assert(strcmp(s, SE3) == 0); strcpy(s, SE1); char_decode(s, ' ', ENCODE_SEQ); assert(strcmp(s, S1) == 0); strcpy(s, SE2); char_decode(s, ' ', ENCODE_SEQ); assert(strcmp(s, S2) == 0); strcpy(s, SE3); char_decode(s, ' ', ENCODE_SEQ); assert(strcmp(s, S3) == 0); strcpy(s, SE4); char_decode(s, ' ', ENCODE_SEQ); assert(strcmp(s, S4) == 0); exit(EXIT_SUCCESS); }