Глупый вопрос

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

Глупый вопрос

Сообщение xqz_me » 06.12.2005 (Вт) 13:02

Есть переменная, содержащая шестнадцатеричное число. Есть ещё две переменные. В одну из них надо записать последнюю цифру данного шестнадцатеричного числа, в другую - все остальные.

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 06.12.2005 (Вт) 13:36

Хм... Все числа в переменных шестнадцатиричные, если не сказать двоичные... Типы то какие у исходных данных и у конечных?

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 06.12.2005 (Вт) 14:05

Есть в басике функции такие: Right и Mid.

Свою переменную в строку преобразуешь, посредством Hex, назад преобразование посредством Val/

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 06.12.2005 (Вт) 14:18

Числа целые от 0 до h2710.

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 07.12.2005 (Ср) 11:02

Ответьте пожалуйста

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.12.2005 (Ср) 11:15

Делаем суб с тремя аргументами
1)Твоё число
2)Приёмник для последней цифры
3)Приёмник для "всего остального"
Код: Выделить всё

Public Sub MySplit(ByVal Num As Variant, ByRef Last As String, ByRef Another As String)

sNm = Hex$(Num)
Last = "&H" + Right(sNm,1)
If Len(sNm)>3 then
   Another = Left(sNm, Len(sNm)-1)
End If
End Sub


Пример использования:
Код: Выделить всё


MySplit &H123ABC7, a$, b$
MsgBox a$         'Сообщит "&H7"
MsgBox b$         'Сообщит "&H123ABC"


Есть ещё вопросы :?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 07.12.2005 (Ср) 11:17

А можно и так:
Код: Выделить всё
Option Explicit
Private Sub Form_Load()
Dim Val1 As Long, Val2 As Long, Val3 As Long, tmstr As String
Val1 = &H2710 ' òâî¸ ÷èñëî
tmstr = Hex(Val1)
Val2 = Val("&H" & Right(tmstr, 1))
Val3 = Val("&H" & Left(tmstr, Len(tmstr) - 1))
MsgBox Hex(Val2)
MsgBox Hex(Val3)
End Sub
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.12.2005 (Ср) 11:25

keks-n писал(а):А можно и так:
Код: Выделить всё
Option Explicit
Private Sub Form_Load()
Dim Val1 As Long, Val2 As Long, Val3 As Long, tmstr As String
Val1 = &H2710 ' òâî¸ ÷èñëî
tmstr = Hex(Val1)
Val2 = Val("&H" & Right(tmstr, 1))
Val3 = Val("&H" & Left(tmstr, Len(tmstr) - 1)) '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MsgBox Hex(Val2)
MsgBox Hex(Val3)
End Sub


Val3 = Val("&H" & Left(tmstr, Len(tmstr) - 1))

Будет ведь "&H&H271"
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 07.12.2005 (Ср) 11:34

Неа, я проверял перед тем как писать, он когда делаешь Hex &H не добавляет почему-то...
Изображение

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 07.12.2005 (Ср) 12:20

И ещё один вопрос. Переменная содержит, например, такое строковое выражение: "08 3А 45 44 08 00 99 43 09 00" (без пробелов). Надо его записать в следующим строковом виде: третья цифра, шестая цифра, пятая цифра, восья цифра, седьмая цифра, десятая цифра, девятая цифра, двенядцатая цифра, одиннадцая цифра, четырнадцатая цифра, тринадцатая цифра, шестнадцатая цифра, пятнадцатая цифра, восемнадцатая цифра. В итоге получится "35444800099349".
Вот более наглядный пример: из "08 1A 32 54 76 98 10 32 54" (без пробелов) получаем "123456789012345".

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 07.12.2005 (Ср) 12:35

OutString=Mid(Instring,_номер цифры_,1) & Mid(Instring,_номер цифры_,1) & Mid(Instring,_номер цифры_,1) & и т. д.
Изображение


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

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

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

    TopList