Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main (void) {
- //Кропаем строку под вывод число типа float в двоичном нужного размера
- char* p;
- if(!(p= (char*)(malloc (sizeof(float)* 8+ 1))))
- printf ("всё плохо");
- //выделили строку
- //+++++++++++++++++++++++++++++++++++++++++++
- //прикол в т том, что я умею перводить в двоичную систему только числа int
- //ну или char на крайняк
- //но float не int, поэтому я щас сделаю буфер, куда тупо побайтно
- //перегоню float
- float f = 12.345;
- char* p_;
- if(!(p_= (char*)(malloc (sizeof(float)))))
- printf ("всё плохо");
- memmove (p_, &f, sizeof(float));
- //теперь в p_ просто набор нужных байт, который я туда перегнал,
- // с ним можно работать уже
- //кто может обойтись без этого буфера, пусть покажет как
- //+++++++++++++++++++++++++++++++++++++++++++
- //теперь побайтно с буфером работаем
- for (int i= 0; i< (int)sizeof(float); i++) {
- //именно (unsigned char) и никак иначе
- //каждый байт последжовательности перегоним сюда
- unsigned char temp_= (unsigned char)p_[i];
- //Это вот специальный буферик, куда мы будем запихивать двоичное представление
- //каждого байта
- char temp__ [8];
- //тут есть несколько способов как переводить int
- //в двоичную систему, я выбрал жёсткий
- //повторюсь: фактически, мы хоть и работаем с int
- //но работаем с ОДНИМ БАЙТОМ
- //а состальные байты- нулевые
- itoa (temp_, temp__, 2);
- //очередная грязь, которая нас поджидает: itoa убирает лидирующие ноли;
- int tem= strlen(temp__);
- memmove (&temp__ [8- strlen(temp__)], temp__,strlen(temp__));
- memset (temp__, '0', 8- tem);
- //теперь перегоним содержимое буферика куда надо:
- memmove (&p[8* i], temp__, 8);
- }
- p [sizeof(float)* 8]= 0;
- printf ("%s\n", p);
- getchar ();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement