Ir para o conteúdo
Dotinho

Converter um Byte em Bool

Mensagens Recomendadas

Dotinho    1
Dotinho

Boas, eu andei á procura mas nao encontrei forma de conver um byte em 7 bools?

Alguém me pode sugerir alguma função? ou tenho que fazer a função a mão?

cmps

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Dotinho    1
Dotinho

desculpem mas ja ta resolvido, fica aqui o codigo para alguem querer..

    Private Function ll_ConvByteEmBool(ByVal bt As Byte) As Boolean()

        Dim lobt As Integer = bt : Dim b(8 ) As Boolean

        If lobt >= 128 Then

            lobt -= 128 : b(7) = True : End If

        If lobt >= 64 Then

            lobt -= 64 : b(6) = True : End If

        If lobt >= 32 Then

            lobt -= 32 : b(5) = True : End If

        If lobt >= 16 Then

            lobt -= 16 : b(4) = True : End If

        If lobt >= 8 Then

            lobt -= 8 : b(3) = True : End If

        If lobt >= 4 Then

            lobt -= 4 : b(2) = True : End If

        If lobt >= 2 Then

            lobt -= 2 : b(1) = True : End If

        If lobt >= 1 Then

            lobt -= 1 : b(0) = True

        End If

        Return b

    End Function

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nokPT    4
nokPT

Eu faço mais assim, acho que é mais linear, e não estás limitado a 8 bits, por exemplo uma DoubleWord (32 bits ou 4x8 bits) ou mais bytes seguidos:

                        Dim h As Integer = 0
                        For i As Integer = 0 To NúmeroBytes
                            For j As Integer = i * 8 To (i * 8 + 7)
                                Inputs(j) = InputBuffer(i) And (2 ^ h)
                                If Inputs(j) > 1 Then Inputs(j) = 1
                                h += 1
                            Next
                            h = 0
                        Next

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Dotinho    1
Dotinho

hmm nao percebi muito bem essa formula, podes explicar melhor?

é que eu queria fazer uma class para ler os timer e a doublewords, esses tipos todos..

Mas ainda nao fiz muita coisa.. porque o sistema responde muito mais rápido do que no s7..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nokPT    4
nokPT

O InputBuffer é um array de bytes

O Inputs é um array de bits

O h varia entre 0 e 7, basicamente é o índice do bit do byte, 2^0 até 2^7

o i é o nº de byte do array de bytes

o j é o nº de bit de do byte i

Em cada ciclo do for do j faço um E (ao bit) entre o byte actual e 2^h (1,2,4,8,16,...,256) se o bit não estiver activo o resultado é 0, se tiver o resultado será 1,2,4,8,16,...,256 por isso como quero 0 e 1 então o resultado é 1

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade