purebasic.info

PureBasic forum
Текущее время: Пн апр 23, 2018 1:13 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Hex в число
СообщениеДобавлено: Пн мар 19, 2018 1:29 am 
Не в сети
доцент

Зарегистрирован: Пн мар 05, 2018 4:49 am
Сообщений: 48
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Нужно преобразовать hex в число, не строку.
Пробовал Val, но он лишь округляет. Было $1980000C, стало 198. Нужно чтобы стало 1980000C, из строки.

Перечитал уйму тем, естественно ответа не нашел. Надеюсь на вашу помощь.
Была еще мысля, вначале получаем число, потом конвертируем в hex, но нет нужной функции.

Еще способ, но он тоже округляет до 198.
Код:
1
2
3
4
5
6
7
8
#STIF_SUPPORT_HEX = 1
Procedure HexStr2HexVal(HexString$)
  ;...Need to replace "$" with "0x" for API function to work properly
  hex$ = ReplaceString(HexString$, "$", "0x")
  myHexValue = -1
  StrToIntEx_(@hex$, #STIF_SUPPORT_HEX, @myHexValue)
  ProcedureReturn myHexValue
EndProcedure



p.s нужно в цикл For передать HEX значение из строки
For addr = startAddr To endAddr


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Hex в число
СообщениеДобавлено: Пн мар 19, 2018 2:26 am 
Не в сети
док
Аватар пользователя

Зарегистрирован: Пт май 11, 2012 2:07 am
Сообщений: 125
Откуда: Киев, Украина
Благодарил (а): 0 раз.
Поблагодарили: 5 раз.
Пункты репутации: 5
Моя твоя не понимать, всё работать.
Код:
1
2
Debug $1980000C
Debug Val("$1980000C")



Последний раз редактировалось Denimus Вт мар 20, 2018 3:43 am, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Hex в число
СообщениеДобавлено: Пн мар 19, 2018 10:53 am 
Не в сети
доцент

Зарегистрирован: Пн мар 05, 2018 4:49 am
Сообщений: 48
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Denimus писал(а):
Код:
1
2
Debug $1980000C
Debug Val("$1980000C")



В начале я записываю в переменную, потом передаю в функцию, если сделать Val, то он округлит и получится 198, может с редактором что-то не так или я передаю не hex значение, хотя я преобразую его т.е Hex(100) + Hex(200) и получаю нужное мне число, после передаю в функцию.

Решил по другому, более легкий путь. Вызываю autoit скрипт, там получаю знчения, после заношу в конфиг и из конфига тащу в пурик. ???? Профит.


Последний раз редактировалось Pypsikan Пн мар 19, 2018 12:06 pm, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Hex в число
СообщениеДобавлено: Пн мар 19, 2018 12:00 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1608
Откуда: Алматы
Благодарил (а): 13 раз.
Поблагодарили: 43 раз.
Пункты репутации: 5
мне вот интересно - коим образом ты собираешься 1980000C увидеть как число? ведь там есть в конце "С" - то есть буква, а не число :) то есть это всегда строка "1980000C", а не число 1980000C.

потом у преобразования hex есть дополнительные параметры - то есть тип переменной, в которую надо хексить указывается. посмотри там может поможет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Hex в число
СообщениеДобавлено: Пн мар 19, 2018 12:07 pm 
Не в сети
доцент

Зарегистрирован: Пн мар 05, 2018 4:49 am
Сообщений: 48
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Уже решил. Пост выше если интересно.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Hex в число
СообщениеДобавлено: Пн мар 19, 2018 12:43 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11108
Благодарил (а): 4 раз.
Поблагодарили: 395 раз.
Pypsikan писал(а):
В начале я записываю в переменную, потом передаю в функцию, если сделать Val, то он округлит и получится 198
Что и где округляется?
Код:
1
2
3
4
x.s="$1980000C"
y=Val(x)
Debug y
Debug Hex(y)


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Hex в число
СообщениеДобавлено: Вт мар 20, 2018 3:49 am 
Не в сети
док
Аватар пользователя

Зарегистрирован: Пт май 11, 2012 2:07 am
Сообщений: 125
Откуда: Киев, Украина
Благодарил (а): 0 раз.
Поблагодарили: 5 раз.
Пункты репутации: 5
Pypsikan писал(а):
если сделать Val, то он округлит и получится 198, может с редактором что-то не так или я передаю не hex значение, хотя я преобразую его т.е Hex(100) + Hex(200) ...

Символ "$" в начале строки, Символ, "$", в начале, строки!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Hex в число
СообщениеДобавлено: Вт мар 20, 2018 7:33 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 578
Благодарил (а): 60 раз.
Поблагодарили: 18 раз.
Пункты репутации: 5
Pypsikan писал(а):
Нужно преобразовать hex в число, не строку.
Пробовал Val, но он лишь округляет. Было $1980000C, стало 198. Нужно чтобы стало 1980000C, из строки.

так и не понял что надо
что значит преобразовать hex в число?, в какое число? в десятичное? в двоичное?
Было $1980000C, стало 198. Нужно чтобы стало 1980000C, как была строка, так строкой и останется
так что ты хочешь получить?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Hex в число
СообщениеДобавлено: Вт мар 20, 2018 11:34 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 567
Благодарил (а): 2 раз.
Поблагодарили: 31 раз.
Пункты репутации: 9
newJS писал(а):
Pypsikan писал(а):
Нужно преобразовать hex в число, не строку.
Пробовал Val, но он лишь округляет. Было $1980000C, стало 198. Нужно чтобы стало 1980000C, из строки.

так и не понял что надо
что значит преобразовать hex в число?, в какое число? в десятичное? в двоичное?
Было $1980000C, стало 198. Нужно чтобы стало 1980000C, как была строка, так строкой и останется
так что ты хочешь получить?

Так как $1980000C равно 4 байтам то это может быть число типа l,i и возможно дробное. :D


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Hex в число
СообщениеДобавлено: Ср апр 11, 2018 6:31 pm 
Не в сети
доцент

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 25
Откуда: Украина Полтава
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Тут еще такая странная штука, програмируюя в разных бейсиках впервые встретил что у пурика до 4.10 выдает ноль.
Debug $1980000C ; 427819020
Debug Val("$1980000C"); 0 результат ноль

Вопрос написан непонятно как, чего и с чего преобразовать?
Нужно преобразовать hex в число, не строку.
Пробовал Val, но он лишь округляет. Было $1980000C, стало 198.
И дальше нелучше, абракадабра какаято, а не вопрос.
Если он пишет на старом пурике и вместо нолей у него буква - "О" то все понятно
на пурике версии 3.94 получится такой результат
Debug $1980000C; 427819020
Debug Val("$1980000C"); 0
Debug Val("1980000C"); 1980000
Debug Val("198OOOOC"); 198 наверное это у него выходит, но тут "OOOO"- это буквы
Debug Val("$198OOOOC"); 0

Правельный результат никогда неполучится на старом пурике.
Если hex число V=$1980000C, то в чем проблема, но не 1980000,а 427819020, его нужно смотреть правильно.
Если пишеш V=$1980000C то получим значение 427819020, чтоб увидеть в hex делай так:
V=$1980000C
Debug Hex(v)
Если в строке то так:
S$="$1980000C"
Debug Val(S$)
Незабудь там ноли, а не буква - "О".
Для проверки переводит пурик или нет:
Debug Val("123") ;123
Debug Val("$123");291

Но это для пурика свыше 4.20, либо используй свою процедуру.
Лучше в начале кусок кода написл в котором получается ошибка, нежели гадать на кофейной гуще, чего он имел введу.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB