Преобразование разныз типов
|
|
Klim |
Дата: Вс, 29.01.2012, 08:10 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
79
Замечания:
±
На сайте с 21.12.2009
Статус:
Offline
|
Есть переменная типа DWORD с содержанием "7DBEEDF7". Как ее разбить на состовляющие? Что получить полубайты отдельно? т.е. 7,D,В,E,E,D,F,7
|
|
|
|
retas |
Дата: Вс, 29.01.2012, 12:06 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
445
Замечания:
±
На сайте с 10.09.2007
Статус:
Offline
|
Dim Wrd as Word Dim Wrd_H as Wrd.HighByte Dim Wrd_L as Wrd.LowByte
|
|
|
|
Klim |
Дата: Вс, 29.01.2012, 12:20 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
79
Замечания:
±
На сайте с 21.12.2009
Статус:
Offline
|
У меня не Word, а Dword. B поэтому LowByte считает только F7 , а HighByte 7D.
|
|
|
|
mikhail09p |
Дата: Вс, 29.01.2012, 13:12 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Может так:
Dim Sostav[8] As Byte
---------------------- Sostav[0] = Wrd Dig 0 Sostav[1] = Wrd Dig 1 ---------------------- Sostav[7] = Wrd Dig 7
|
|
|
|
Klim |
Дата: Вс, 29.01.2012, 13:24 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
79
Замечания:
±
На сайте с 21.12.2009
Статус:
Offline
|
Так протон вообще нt принимает. Я нашел способ, как разбить побайтно, а вот как разбить байт на полубайт? т.е. имеем 7F надо получить отдельно 7 и F А DIG работает только с десятичными числами.
Сообщение отредактировал
Klim - Вс, 29.01.2012, 13:25
|
|
|
|
ADMIN |
Дата: Вс, 29.01.2012, 14:51 | Сообщение # 6 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Не принимает потому, что писать нужно так:
Dim Sostav[8] As Byte
Sostav[0] = Dig Wrd, 0 Sostav[1] = Dig Wrd, 1
Чтобы разбить на полубайты: Dim Var1 as byte Dim Var2 as byte Dim TMP as Byte
TMP = $7F
Var1 = TMP >> 4 'Теперь в Var1 цифра 7 var2 = TMP & $0F 'А теперь в Var2 - цифра F
|
|
|
|
ivan_fd |
Дата: Вс, 29.01.2012, 14:55 | Сообщение # 7 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
ADMIN опередил немного меня.
Code Dim dwrd As Dword Dim wrd1 As Word Dim wrd2 As Word Dim bte1 As Byte Dim bte2 As Byte Dim bte3 As Byte Dim bte4 As Byte Dim pb1 As Byte Dim pb2 As Byte Dim pb3 As Byte Dim pb4 As Byte Dim pb5 As Byte Dim pb6 As Byte Dim pb7 As Byte Dim pb8 As Byte begin: dwrd = $7DBEEDF7 wrd1 = dwrd.LowWord wrd2 = dwrd.HighWord bte1 = wrd1.LowByte bte2 = wrd1.HighByte bte3 = wrd2.LowByte bte4 = wrd2.HighByte pb1 = bte1 >> 4 pb2 = bte1 & $F pb3 = bte2 >>4 pb4 = bte2 & $F pb5 = bte3 >> 4 pb6 = bte3 & $F pb7 = bte4 >>4 pb8 = bte4 & $F
GoTo begin
|
|
|
|
vladh |
Дата: Вс, 29.01.2012, 15:03 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
258
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
Рекомендую последовательно воспользоваться оператором ">>" или "<<". И тогда можно выделить части с любым количеством бит.
|
|
|
|
Klim |
Дата: Вс, 29.01.2012, 15:09 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
79
Замечания:
±
На сайте с 21.12.2009
Статус:
Offline
|
Спасибо, работает. А где конкретно можно почитать описание данной процедуры? Я имею ввиду >> и & $0F
Сообщение отредактировал
Klim - Вс, 29.01.2012, 15:26
|
|
|
|
ivan_fd |
Дата: Вс, 29.01.2012, 16:10 | Сообщение # 10 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
А что здесь читать, это битовая математика. >> значит сдвиг вправо, & логическое И.
Сообщение отредактировал
ivan_fd - Вс, 29.01.2012, 16:14
|
|
|
|
mikhail09p |
Дата: Вс, 29.01.2012, 19:22 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Извиняюсь, с ночной смены, ошибся.
|
|
|
|