Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Byte Array

in Suggestions Posts: 744

0 and 1 are currently integers, that means the number 0 is 00000000000000000000000000000000 and 1 is 00000000000000000000000000000001, 2 is 00000000000000000000000000000010, etc. (the first bit is positive/negative numbers. Can we, instead of 00000....0 and 0000...1 simply use 0 and 1.

Example:

function setup()
      i = 5 --Integer
      b = byte(0) --1-Byte-Level
end

PS. I searched.

Comments

  • dave1707dave1707 Mod
    Posts: 6,325

    @TokOut I don’t understand what you want. What are you doing that you’re getting all those leading zeroes. It looks like you’re after binary values. If you want to convert a decimal number to binary then try this. There are no leading zeroes.

    function setup()
        a=toBin(10000)
        print(a)
    end
    
    function toBin(n)
        local digits=""
        while n>0 do
            digits=digits..n%2
            n=n//2
        end
        return string.reverse(digits)
    end
    
  • Posts: 744

    If you have a number of the type integer, you have 32 bytes storing its’ data.

    Eg:

    integer 2 = byte 00000000000000000000000000000010
    integer 5 = byte 00000000000000000000000000000101
    integer 17 = byte 00000000000000000000000000010001
    integer -4 = byte 10000000000000000000000000000100
    

    But I need a byte array of, for example not 32 bytes (integer), I need n-bytes.

  • dave1707dave1707 Mod
    edited November 1 Posts: 6,325

    Try this.

    function setup()
        a=toBin(100,6)
        print(a)
    end
    
    function toBin(n,s) -- n=decimal number   s=number of digits to show
        if n<0 then
            n=-n
            neg=true
        end
        local digits=""
        while n>0 do
            digits=(n%2)..digits
            n=n//2
        end
        if #digits>s or #digits>=s and neg then
            return "error, not enough digits"
        end
        digits=string.rep("0",s)..digits
        if neg then
            digits="1"..string.sub(digits,#digits-s+2,#digits)
        else
            digits=string.sub(digits,#digits-s+1,#digits)
        end
        return digits
    end
    
  • Posts: 744

    Thank you!

Sign In or Register to comment.