Advertisement
semenrbt

bvn

Mar 6th, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.62 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. unsigned char *MakeBV(char str[], int *size){
  5.   if(str == NULL) return 0;
  6.   int bits = 0;
  7.   while(str[bits] > 13) bits++;
  8.   bits--;
  9.   int mem = bits/8 + 1;
  10.   *size = bits;
  11.   unsigned char *vek = NULL;
  12.   vek = (unsigned char*) malloc(sizeof(unsigned char)*mem);
  13.   for(int k = 0; k < mem; k++) vek[k] = 0;
  14.   int pos = 0, n = 0;
  15.   unsigned char mask = 1;
  16.   while(bits - pos >= 7){
  17.     for(int k = 7; k >= 0; k--){
  18.       if(str[pos+k] != '0'){
  19.         mask = mask << (7-k);
  20.         vek[n] = vek[n] | mask;
  21.         mask = 1;
  22.       }
  23.     }
  24.     pos = pos + 8;
  25.     n++;
  26.   }
  27.   for(int k = 0; k < bits-pos+1; k++){
  28.     if(str[pos+k] != '0'){
  29.         mask = mask << (7-k);
  30.         vek[n] = vek[n] | mask;
  31.         mask = 1;
  32.     }
  33.   }
  34.  
  35.   return vek;
  36. }
  37.  
  38. char *ConvertVektor(unsigned long vek[], int bits){
  39.     if(vek == NULL) return 0;
  40.     char *res = NULL;
  41.     res = (char*) malloc(sizeof(char)*(bits+2));
  42.     int mem = bits/8+1;
  43.     int AmOfNul = 8 - (bits % 7);
  44.     if(res == NULL) return 0;
  45.     res[bits+1] = 13;
  46.     for(int k = 0; k <= bits; k++) res[k] = 48;
  47.     unsigned long mask = 1;
  48.     /*for(int k = size - 1; k >= 0; k--){
  49.         if((vek & (mask << (size-k-1))) > 0){
  50.            res[k] = 49;
  51.         }
  52.     } */
  53.     for(int k = 0; k < mem-1; k++){
  54.        
  55.     }
  56.     return res;
  57. }
  58.  
  59.  
  60. int main(void) {
  61.   char Str[] = "111";
  62.   int len = 0;
  63.   unsigned char *V = MakeBV(Str, &len);
  64.   for(int k = 0; k < len; k++)
  65.   {
  66.     char *Vek1 = ConvertVektor(V[k], 8);
  67.     for(int k = 0; k < 8; k++)
  68.         printf("%c", Vek1[k]);
  69.   }
  70.   printf("\n");
  71.   return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement