Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Стандартная функция, преобразовывающая hex-стро... Добавлено: 05.05.03 15:24  

Автор вопроса:  avkiev | ICQ: 226072 

существует ?

Т.е. у нее на входе "FF", на выходе должно быть 255.

Как это сделать стандартными средствами ?

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 anatoli



Вопросов: 0
Ответов: 5
 Профиль | | #1 Добавлено: 05.05.03 16:15

public function ZZZZZ(by val pPar as string) as integer

         ZZZZZ = val("&H" & pPar)

end function

msgbox(ZZZZZ("FF")) ->255

 

 

Ответить

Номер ответа: 2
Автор ответа:
 avkiev



ICQ: 226072 

Вопросов: 48
Ответов: 107
 Профиль | | #2 Добавлено: 06.05.03 10:10
Пасиб

Ответить

Номер ответа: 3
Автор ответа:
 Andvari



Вопросов: 1
Ответов: 5
 Профиль | | #3 Добавлено: 07.02.05 19:33
У меня такая вот проблема... Хочу сделать кое-какой редактор, но не могу правильно перевести из ХЕКСа во флоат. Например, E5DF86C4 это в переводе на русский значит -1078.9967.
Есть ли функция, которая может так переводить?

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 07.02.05 20:27
http://babbage.cs.qc.edu/courses/cs341/IEEE-754hex32.html

Ответить

Номер ответа: 5
Автор ответа:
 Andvari



Вопросов: 1
Ответов: 5
 Профиль | | #5 Добавлено: 08.02.05 16:56
Спасибо за ссылку, но к сожалению она мне не помогла.
Что интересно, я сделал программку, которая переводит хекс в нормальное число. Из E5DF86C4 получается -438335804. Но HexWorkshop это число (E5DF86C4) переводит совсем не так, а вот как:

Signed long -997793819
Unsigned long 3297173477
Float (32 бита) -1078.9967 (вот оно-то мне и нужно)

Такая вот загогулина, понимашь....

Ответить

Номер ответа: 6
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #6
Добавлено: 08.02.05 17:38
А про обратный порядок байт в слове и двойном слове ты слышал? Если в памяти находится E5 DF 86 C4, то оно равно не 0xe5df86c4, а 0xc486dfe5, т.е. HexWorkshop тебе перевел правильно. А почему тебе не помогла ссылка? Там ведь все понятно написано, не то, что в самом стандарте... Но если тебе нужен стандарт, поищи IEEE-754

Ответить

Номер ответа: 7
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #7
Добавлено: 08.02.05 18:42

CopyMemory Forever

И, к слову, а как в HEX может быть FLOAT??? HEX оно с Float не совместимое...
2Sharp а?

Ответить

Номер ответа: 8
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #8
Добавлено: 08.02.05 19:11
Типа имеется ввиду машинное представление чисел с плавающей точкой, по старой системе float - 32-битовое нецелое, double - 64-битовое нецелое, long double - 80-битовое нецелое. Подробнее надо у CyRax'а узнавать, он этим интересовался.
Человеку, таким образом, надо перевести HEX-запись машинного представления вещественных чисел в двоичный вид.

Ответить

Номер ответа: 9
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #9
Добавлено: 08.02.05 19:11
Тьфу, в десятичный

Ответить

Номер ответа: 10
Автор ответа:
 Andvari



Вопросов: 1
Ответов: 5
 Профиль | | #10 Добавлено: 08.02.05 19:40
Я действительно не совсем понимаю всю эту науку. Как перевести 0F в 15 это ежу понятно. Но каким образом из 00008040 получить 4 я никак не пойму.
Где бы посмотреть алгоритм? В инете никак не могу найти.

Ответить

Номер ответа: 11
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #11
Добавлено: 08.02.05 19:49
А кто из 00008040 получает 4? Если это непосредственно число, должно получиться 32832, если это в памяти, тогда 1082130432

Ответить

Номер ответа: 12
Автор ответа:
 Andvari



Вопросов: 1
Ответов: 5
 Профиль | | #12 Добавлено: 08.02.05 21:22
Странно, у меня хексэдитор на 0000 8040 показывает флоат 4.
А вот сигнед лонг 1082130432.
0000 8041 - это 16
и т д.

Дело в том, что я хочу сделать программу, которая обрабатывает особые файлики. Интересующие меня числа там помещены в таком вот неудобном виде. Я хочу, чтобы программа сначала читала всю эту гадость E5DF86C4 60B4B2C0 542D8E43 словно это текст (это я уже сделал), а затем бы переводила это всё в десятичные дроби.
Если кому интересно, то это файлики из игры Мафия, и в них записаны координаты некоторых объектов. Структуру я уже знаю.

Ответить

Номер ответа: 13
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #13
Добавлено: 08.02.05 22:54
А IEEE-754 ты так и не читал?

Ответить

Номер ответа: 14
Автор ответа:
 Andvari



Вопросов: 1
Ответов: 5
 Профиль | | #14 Добавлено: 11.02.05 12:52
Да, спасибо огромное. Нашёл наконец. Хотя и с трудом.
Плясать тут надо от двоичного представления.
Структура такая:


знак показ. степ. мантисса
х хххх хххх ххх хххх хххх хххх хххх хххх


Само число равно -1 в степени знака умножить на 2 в степени (показат.степени - 127) и умножить на 1.мантисса.
То есть единичка, а после запятой мантисса идёт.
Ещё раз спасибо, сам бы не справился.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам