Форум программистов, компьютерный форум CyberForum.ru

Конвертировать машинное представление float в строку из 4 символов - C++

Восстановить пароль Регистрация
 
Vtulhu
369 / 375 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
24.02.2013, 11:59     Конвертировать машинное представление float в строку из 4 символов #1
Допустим, есть переменная X типа float, имеющая значение... да хотя бы -3.14. Машинным представлением этого числа являются четыре байта. Нужна функция, которая принимает X, а возвращает строку из четырёх символов, ASCII-коды которых равны соответствующим байтам. Кстати, потом эти символы будут сбрасываться в файл. Как это проще сделать? Не возникнет ли глюка, если вдруг среди этих четырёх байт случайно окажется такой, который равен нулю?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2013, 11:59     Конвертировать машинное представление float в строку из 4 символов
Посмотрите здесь:

C++ 2-ичное представление числа типа double или float?
C++ Конвертировать float в *char???
конвертировать System::String ^ в float C++
Машинное представление C++
Представление float в двоичной системе C++
Машинное представление типов float и struct C++
C++ Как сложить два float-а, имея их представление в виде массива байт?
C++ Перевести отрицательное число из десятичного представления в машинное представление

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.02.2013, 12:39     Конвертировать машинное представление float в строку из 4 символов #2
не все символы отображаемы. поэтому их вывод может выглядеть криво. вот если просто значения этих кодов, то можно вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <string>
 
 
std::string getStringRepresentation(float val)
{
    const char* valPtr = (const char*)(&val);
    return std::string(valPtr, valPtr + sizeof(float));
}
 
void printStringRepresentation(float val)
{
    const std::string representation = getStringRepresentation(val);
    for (std::string::const_iterator it = representation.begin(), end = representation.end(); it != end; ++it)
    {
        std::cout << int(*it) << ' '; // вывод значений кодов
        //std::cout << *it << ' '; // вывод символов
    }
    std::cout << std::endl;
}
 
int main()
{
    printStringRepresentation(0.f);
    printStringRepresentation(1.f);
    printStringRepresentation(1.5f);
    printStringRepresentation(3.445f);
    return 0;
}
ну и запись в текстовый файл нулевых или похожих символов может быть кривой. если писать в бинарный, а не в текстовый, то все будет хорошо.
Yandex
Объявления
24.02.2013, 12:39     Конвертировать машинное представление float в строку из 4 символов
Ответ Создать тему
Опции темы

Текущее время: 16:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru