Типы Данных!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Fridx
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 18.01.2006 (Ср) 4:03

Типы Данных!

Сообщение Fridx » 18.01.2006 (Ср) 4:27

Здрасьте!
Помогите с разьяснением\понятием переобразования типов данных пожалуйста.
Есть у меня две текстовые формы. В одну вводишь число, во второй получается 16-й код этиого числа. Можно так конечно:
Hex(Asc(ЧИСЛО))
Но вот проблема такая. Думаю многие знают 16-й редактор (hex Editor). Так вот есть там тип данных - Float (в байсике это кажись single зовётся) - тип данных 4 байта, с плавающей запятой... Так вот как сделать, чтобы при вводе в первую текстовую форму значения 2145.1333 (например), во второй появлялось 16-е значение (2145.1333 соответствует 2212 0645). Реально же в байсике получается сооовершенно другое значение :(

делаю так:
vd = CSng(Vvod.Text)
Poluch.Text = Hex(vd)

ясно, что в Vvod.Text вводим 2145.1333
------------
извиняйте за корявость, программирую оочень недавно :oops:

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 18.01.2006 (Ср) 5:22

Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.01.2006 (Ср) 5:28

Так ты определись, что тебе надо - шестнадцатеричное значение чисел или их представление в памяти компьютера.
Если ты увидишь 22120645, то как ты это отредактируешь, чтобы, к примеру, получилось 4512.2342 в итоге?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Fridx
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 18.01.2006 (Ср) 4:03

Сообщение Fridx » 18.01.2006 (Ср) 20:58

Прогу я посмотрел, спасибо. Но не то. Как я говорил при переводе не то значение получается.

Вот например 25529A44(16) - если его перевести в с помощью Hex() или проги, выложенной выше, получится 626170436 (Dec). Однако если вписать 25529A44(16) в hex-редактор и посмотреть на значение в float, то получится 1234.567
Вот табличка из справки этого редактора:

CHAR ------- char
BYTE ------- signed __int8
byte ------- signed __int8
UBYTE ------- unsigned __int8
ubyte ------- unsigned __int8
WORD ------- signed __int16
word ------- signed __int16
USHORT ------- unsigned __int16
ushort ------- unsigned __int16
SHORT ------- signed __int16
DWORD ------- signed __int32
dword ------- signed __int32
LONG ------- signed __int32
ulong ------- unsigned __int32
quad ------- signed __int64
UQUAD ------- unsigned __int64
uquad ------- unsigned __int64
FLOAT ------- float
DOUBLE ------- double



Так ты определись, что тебе надо - шестнадцатеричное значение чисел или их представление в памяти компьютера.
Если ты увидишь 22120645, то как ты это отредактируешь, чтобы, к примеру, получилось 4512.2342 в итоге?


Так мне надо, чтобы я редактировал значение float (например изменял 1524.4542 на -1452.111), а в другой форме выводился бы 16-й, 4-х байтовый результат.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.01.2006 (Чт) 4:25

Ещё раз.
Ты понимаешь отличие значения числа от его представления в памяти? И если понимаешь, то что из них тебе надо?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 19.01.2006 (Чт) 12:35

Вот например 25529A44(16) - если его перевести в с помощью Hex() или проги, выложенной выше, получится 626170436 (Dec). Однако если вписать 25529A44(16) в hex-редактор и посмотреть на значение в float, то получится 1234.567


А ты попробуй 25529A44(HEX) в calc.exe ввести и перевести его в DEC :!:

Fridx
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 18.01.2006 (Ср) 4:03

Сообщение Fridx » 20.01.2006 (Пт) 16:02

Всё понял теперь. Извините за тупизм:)
Недавно начал просто :oops:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 183

    TopList