Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Преобразование разныз типов (Надо выделить полубайты из переменной типа DWORD)
Преобразование разныз типов
Klim Дата: Вс, 29.01.2012, 08:10  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 79
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

Есть переменная типа DWORD с содержанием "7DBEEDF7". Как ее разбить на состовляющие? Что получить полубайты отдельно? т.е. 7,D,В,E,E,D,F,7
ЯНДЕКС Дата: 29.01.2012
retas Дата: Вс, 29.01.2012, 12:06  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 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
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

У меня не Word, а Dword. B поэтому LowByte считает только F7 , а HighByte 7D.
mikhail09p Дата: Вс, 29.01.2012, 13:12  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 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
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

Так протон вообще нt принимает.
Я нашел способ, как разбить побайтно, а вот как разбить байт на полубайт? т.е. имеем 7F надо получить отдельно 7 и F
А DIG работает только с десятичными числами.

Сообщение отредактировал Klim - Вс, 29.01.2012, 13:25
ADMIN Дата: Вс, 29.01.2012, 14:51  |                                                                                                                Сообщение # 6
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 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
Репутация: 124   ±
Замечания:   ±
На сайте с 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
Репутация: 11   ±
Замечания:   ±
На сайте с 15.10.2007

Статус: Offline

Рекомендую последовательно воспользоваться оператором ">>" или "<<". И тогда можно выделить части с любым количеством бит.
Klim Дата: Вс, 29.01.2012, 15:09  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 79
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

Спасибо, работает. А где конкретно можно почитать описание данной процедуры? Я имею ввиду >> и & $0F
Сообщение отредактировал Klim - Вс, 29.01.2012, 15:26
ivan_fd Дата: Вс, 29.01.2012, 16:10  |                                                                                                                Сообщение # 10
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

А что здесь читать, это битовая математика. >> значит сдвиг вправо, & логическое И.


Сообщение отредактировал ivan_fd - Вс, 29.01.2012, 16:14
mikhail09p Дата: Вс, 29.01.2012, 19:22  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Извиняюсь, с ночной смены, ошибся.
ЯНДЕКС Дата: 29.01.2012
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Преобразование разныз типов (Надо выделить полубайты из переменной типа DWORD)
  • Страница 1 из 1
  • 1
Поиск: