Я хочу написать функцию, которая распаковывает буфер char * в буфер float *.
Буфер char * изначально был упакован как число с плавающей точкой в байтах.
Каков наилучший способ сделать это?
Я реализовал целые числа ниже.
Я упаковал массив из 4-х байтовых целых чисел в буфер char *.
Это функция, которую я использовал, чтобы распаковать ее и присвоить ей int *.
void CharToInt(int* tar, char* src, int len) {
char* val = src;
char* end = src + len-1;
for( ; val<end; tar++,val+=sizeof(int)) {
*tar = ( (((*val) < 0) ? 256 + (*val) : (*val) ) +
(((*val+1) < 0) ? 256 + (*val+1) : (*val+1) << 8 ) +
(((*val+2) < 0) ? 256 + (*val+2) : (*val+2) << 16) +
(((*val+3) < 0) ? 256 + (*val+3) : (*val+3) << 24) );
}
}
Добавление 256 к подписанному байту, кажется, заботится о подписанном символе. (От -128 до 127).
Это потому, что это то же самое, что переворачивать биты и вычитать 1?
В любом случае, я ищу эквивалент *.