| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Преобразования |
| Автор: Евгенний 9.11.2004, 06:44 |
| Как преобразовать из строки (шестнадцатеричная запись) в число одинарной точности. 48 - E1 - 19 - 87 преобразовать в 76,94. 85 - EB - 7B - 86 преобразовать в 62,98. AE - 47 - 2C - 87 преобразовать в 86,14. 52 - B8 - OA – 87 преобразовать в 69,36. Заранее благодарю. |
| Автор: shedon 9.11.2004, 09:08 | ||||
А что такое
если да, то переводишь число в дес. вид и делаешь, что-то наподобие след. кода
|
| Автор: Евгенний 9.11.2004, 12:44 |
| Переделываю программу, написанную на японском языке программирования BASIC(86), там есть такая функция MKS - преобразовывает числа одинарной точности (76,94; 62,98; 86,14; 69,36) в строку. Как называется данный формат чисел не знаю. Хотя именно это и требуется узнать. Понять технологию преобразования из шестнадцатеричной записи(двоичной) в обычное число с плавающей точкой (где храниться экспонента, а где мантисса). Искренне надеюсь на помощь. Добавлено @ 12:47 Предложенный вариант не срабатывает |
| Автор: shedon 9.11.2004, 13:22 | ||
да вроде должно работать, попробуй тогда так 3,14 в формате IEEE выглядит так 1078523331dec или 40 48 F5 C3 в hex, вот на выходе f будет равно 3.14
а что именно не работает, неправильно преобразовывает ? |
| Автор: Евгенний 10.11.2004, 12:56 |
| C 3.14 все работает, а с 86,14(AE - 47 - 2C - 87 в десятеричной системе “174 71 44 135”), не получается( другой формат). В QBasice есть функция CVSMBF она преобразует верно, но я не знаю как её сделать средствами С++ или Delphi. |
| Автор: shedon 10.11.2004, 13:46 | ||||
А это от того, что 86,14 = { ae 47 ac 42 }, т.е. 0x42ac47ae; и если написать след. код:
то как раз и получим в f=86.14 |
| Автор: Adil' 10.11.2004, 15:48 | ||
shedon, а зачем ты memcpy и _asm используешь? можно же так :
|
| Автор: shedon 10.11.2004, 16:34 |
| Adil' , можно не спорю, просто как-то не подумал... |
| Автор: Евгенний 11.11.2004, 05:44 |
| Наверное, я неправильно объяснил нужно именно из AE - 47 - 2C – 87 получить 86,14. Т. е. имеем файл с числами 48 - E1 - 19 - 87 ; 85 - EB - 7B - 86 ; AE - 47 - 2C - 87 ; 52 - B8 - OA – 87 их нужно преобразовать в 76,94; 62,98; 86,14; 69,36 соответственно. Из формата MS BINARY в IEE. Добавлено @ 05:53 А то что на счет _asm, то это только лучше (можно только на нем) |
| Автор: shedon 11.11.2004, 08:40 |
| http://community.borland.com/article/0,1410,16431,00.html |
| Автор: Евгенний 11.11.2004, 12:31 |
| Спасибо Shedon. Почерпнул много нового. |