Работа с битами

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Создатель
Постоялец
Постоялец
 
Сообщения: 422
Зарегистрирован: 21.04.2004 (Ср) 3:32
Откуда: Новосибирск

Работа с битами

Сообщение Создатель » 03.04.2005 (Вс) 18:11

Странно, но ни в книге, ни в инете не нашел, каким образом в Vb.net можно работать с битами. Есть ли какие-нить встроенные функции...
Можно ли преобразовать строку "Hello World" в последовательность битов?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 03.04.2005 (Вс) 21:01

System.Collections.BitArray
Summary:
Manages a compact array of bit values, which are represented as Booleans, where true indicates that the bit is on (1) and false indicates the bit is off (0).

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 03.04.2005 (Вс) 21:30

а вот еще один пример:

Код: Выделить всё
'преобразование в строку, содержащую двоичное представление числа 54
bin = Convert.ToString(54, 2)
'преобразование в строку, содержащую шестнадцатиричное представление числа 54
hex = Convert.ToString(54, 16)

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 04.04.2005 (Пн) 11:22

BitConverter
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Создатель
Постоялец
Постоялец
 
Сообщения: 422
Зарегистрирован: 21.04.2004 (Ср) 3:32
Откуда: Новосибирск

Сообщение Создатель » 18.04.2005 (Пн) 18:57

Что-то я и в msdn лазил, но так и не понял....(Видимо я тупой)
Каким образом можно перевести символ в последовательность битов...
Кто-нить может кинуть пример?

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 19.04.2005 (Вт) 9:48

ну, символ, это ж число....

Как вариант, BinaryFormatter))))
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Создатель
Постоялец
Постоялец
 
Сообщения: 422
Зарегистрирован: 21.04.2004 (Ср) 3:32
Откуда: Новосибирск

Сообщение Создатель » 19.04.2005 (Вт) 15:31

Всем спасибо, с переводом символа в последовательность битов я разобрался...Вот только каким образом все это можно перевести назад в символ...Используя кодировку ASCII ???

Создатель
Постоялец
Постоялец
 
Сообщения: 422
Зарегистрирован: 21.04.2004 (Ср) 3:32
Откуда: Новосибирск

Сообщение Создатель » 19.04.2005 (Вт) 18:39

Это надо же быть таким тупым!!!! Врубился, как это сделать....Да, сегодня был слишком тяжелый день...

asharky
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 22.06.2004 (Вт) 0:39
Откуда: Батоны-ларьки-поребрики...

Сообщение asharky » 20.12.2007 (Чт) 23:57

Делаю тактильную экранную клавиатуру для кассира и вот чего наваял:

Код: Выделить всё
    '''<summary>Битовый массив для работы с клавиатурой</summary>
    '''<remarks>0 - Первый или не первый раз нажата клавиша
    '''         1 - Была-ли нажата "."
    '''         2 - После "." один раз нажата клавиша
    '''         3 - После "." второй раз нажата клавиша
    '''</remarks>
    Private c_byteKey As New Collections.BitArray(4, False)
.............
.............
.............
    '''<summary>Нажатие кнопки "3"</summary>
    Private Sub btn_3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles btn_3.Click
        If Me.c_byteKey.Item(1) Then                                ' Была нажата "."
            If Me.c_byteKey.Item(2) Then                            ' После "." нажималась цифра
                If Me.c_byteKey.Item(3) Then                        ' После "." два раза нажималась цифра
                    Beep()                                          ' Выдать сигнал ошибки
                Else
                    Me.Summ_customer = Me.Summ_customer + 0.03D     ' Провести пересчет
                    Me.c_byteKey.Item(3) = True                     ' Поднять флаг "второе нажатие" после "."
                End If
            Else
                Me.Summ_customer = Me.Summ_customer + 0.3D          ' Провести пересчет
                Me.c_byteKey.Item(2) = True                         ' Поднять флаг "первое нажатие" после "."
            End If
        Else
            If Me.c_byteKey.Item(0) Then                            ' Клавиши уже нажимались
                Me.Summ_customer = Me.Summ_customer * 10I + 3D      ' Провести пересчет
            Else
                Me.Summ_customer = 3D                               ' Провести пересчет
                Me.c_byteKey.Item(0) = True                         ' Взвести флаг "первое нажатие" цифры
            End If
        End If
    End Sub 'btn_3_Click()


Вопрос: а как-то красивее с битами можно работать? Наверное да, но от чего оттолкнуться? Select case или что-то подобное? Посоветуйте плз.
В культурной столице проститутки берут книгами...

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 21.12.2007 (Пт) 11:20

Код: Выделить всё
  Dim Summ As Decimal
  Dim B As Byte = 0 ' [0-15]


  Private Sub btn_3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
  Handles btn_3.Click

    Select Case B
      Case 0, 4, 8, 12 : Summ = 3@ : B = B Or 1    'bit0=false: bit1=false: bit2=any: bit3=any
      Case 1, 5, 9, 13 : Summ *= 10@ + 3@          'bit0=true: bit1=false: bit2=any: bit3=any
      Case 2, 3, 10, 11 : Summ = 0.3@ : B = B Or 4 'bit0=any: bit1=true: bit2=false: bit3=any
      Case 6, 7 : Summ = 0.3@ : B = B Or 8         'bit0=any: bit1=true: bit2=true: bit3=false
      Case 14, 15 : Beep()                         'bit0=any: bit1=true: bit2=true: bit3=false:
    End Select

  End Sub
:wink:
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

asharky
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 22.06.2004 (Вт) 0:39
Откуда: Батоны-ларьки-поребрики...

Сообщение asharky » 21.12.2007 (Пт) 12:10

Nord777 писал(а): :wink:
Спасибо :oops:
В культурной столице проститутки берут книгами...

asharky
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 22.06.2004 (Вт) 0:39
Откуда: Батоны-ларьки-поребрики...

Сообщение asharky » 23.12.2007 (Вс) 12:10

Забавно, но оставил по своему. А потому что человек, который будет сопровождать программу, попросил об этом. Типа: -"А нафиг мне битовая логика? If...Then я ещё понимаю, а разбираться в том, как Byte устроен...". Такие вот бывают казусы :shock:

ЗЫ. Поколение Пепси, блин. С мышой наперевес и Визардами, вместо штабных карт... :roll:
В культурной столице проститутки берут книгами...


Вернуться в Visual Basic .NET

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

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

    TopList  
cron