Calculating 16-bit integer value from two 8-bit integers?

Helen Che

To illustrate what I mean: In a hex editor I have 8C 01 which is 396 little-endian. The data I'm working with is a tuple with two separate 8-bit integers i = (140, 1).

To calculate the 16-bit value my first approach was to simply multiply the 2nd integer by 255 then add the first. However this method is simply wrong as it does not give the correct value (due to my lack of knowledge). Can anyone provide a better (possibly Pythonic) approach?

Willem Van Onsem

You need to multiply it with 256 (28). So the function would be something like:

def pack (tup) :
    return 256*tup[1]+tup[0]

or perform a bitwise shift, which makes more sense when working with bits:

def pack(tup) :
    return (tup[1]<<8)|tup[0]

here << means you place the value of tup[1] eight positions to the left. The pipe (|) means you perform an OR-operation. This is reasonable if you enforce the values in the tuple are less than 256 and can - at least theoretically - result in some speedup.

More generic

In case your tuple has an arbitrary length (for instance three, four, or more elements), you can define a more generic function:

def pack(tup) :
    sum = 0
    for i in range(len(tup)) :
        sum |= tup[i]<<(i<<3)
    return sum

Here <<3 is used as a shortcut to multiplying with 8, so an equivalent function would be:

def pack(tup) :
    sum = 0
    for i in range(len(tup)) :
        sum |= tup[i]<<(8*i)
    return sum

Or written out, it is something like:

tup[0]|(tup[1]<<8)|(tup[2]<<16)|(...)

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

How to Convert 32 bit float value to two 16 bit integers

From Dev

Representing an unsigned 32-bit value with two unsigned 16-bit integers

From Dev

Arithmetic operations with 8 and 16 bit integers

From Java

How to create a 32-bit integer from eight (8) 4-bit integers?

From Dev

Convert Uint16Array containing 8-bit integers to regular integer

From Dev

Create one 16-bit vector from two 8-bit vectors

From Dev

compare 8bit value against 16bit value

From Dev

efficient way to convert 16 bit value to 8 bit value

From Dev

efficient way to convert 16 bit value to 8 bit value

From Dev

Adding two 16 bit numbers using 8 bit registers (Assembly)

From Dev

Two 16 bit ints to One 32 bit float value

From Dev

Is a signed 16-bit integer the same as a two's complement 16-bit integer?

From Dev

Concatenate two 64bit integer and store it into a uint8_t array of [16]

From Dev

Adding two 16-bit integers to produce a 16-bit answer in 6502?

From Dev

Convert a 64 bit integer into 8 separate 1 byte integers in python

From Dev

unsigned 16 bit integers in Clojure

From Dev

How do you convert a 16 bit unsigned integer to a larger 8 bit unsigned integer?

From Dev

Getting value from a 16-bit register

From Dev

Getting value from MSB of 16 bit register

From Dev

Reading 16-bit integers from binary file c++

From Dev

How to read signed 16bit integers from QFile?

From Dev

Bit integer value from numerated list

From Dev

MongoDB C++ Driver - 8-bit and 16-bit integers?

From Dev

Convert two 32 bit integers to one signed 64 bit integer string

From Dev

Convert two 32 bit integers to one signed 64 bit integer string

From Java

Subtracting packed 8-bit integers in an 64-bit integer by 1 in parallel, SWAR without hardware SIMD

From Dev

Converting 32-bit integer into array of four 8-bit integers in Python

From Dev

Is there an easy way to convert from 32bit integer to 16bit integer?

From Dev

Calculating value from 5-bit float representation

Related Related

  1. 1

    How to Convert 32 bit float value to two 16 bit integers

  2. 2

    Representing an unsigned 32-bit value with two unsigned 16-bit integers

  3. 3

    Arithmetic operations with 8 and 16 bit integers

  4. 4

    How to create a 32-bit integer from eight (8) 4-bit integers?

  5. 5

    Convert Uint16Array containing 8-bit integers to regular integer

  6. 6

    Create one 16-bit vector from two 8-bit vectors

  7. 7

    compare 8bit value against 16bit value

  8. 8

    efficient way to convert 16 bit value to 8 bit value

  9. 9

    efficient way to convert 16 bit value to 8 bit value

  10. 10

    Adding two 16 bit numbers using 8 bit registers (Assembly)

  11. 11

    Two 16 bit ints to One 32 bit float value

  12. 12

    Is a signed 16-bit integer the same as a two's complement 16-bit integer?

  13. 13

    Concatenate two 64bit integer and store it into a uint8_t array of [16]

  14. 14

    Adding two 16-bit integers to produce a 16-bit answer in 6502?

  15. 15

    Convert a 64 bit integer into 8 separate 1 byte integers in python

  16. 16

    unsigned 16 bit integers in Clojure

  17. 17

    How do you convert a 16 bit unsigned integer to a larger 8 bit unsigned integer?

  18. 18

    Getting value from a 16-bit register

  19. 19

    Getting value from MSB of 16 bit register

  20. 20

    Reading 16-bit integers from binary file c++

  21. 21

    How to read signed 16bit integers from QFile?

  22. 22

    Bit integer value from numerated list

  23. 23

    MongoDB C++ Driver - 8-bit and 16-bit integers?

  24. 24

    Convert two 32 bit integers to one signed 64 bit integer string

  25. 25

    Convert two 32 bit integers to one signed 64 bit integer string

  26. 26

    Subtracting packed 8-bit integers in an 64-bit integer by 1 in parallel, SWAR without hardware SIMD

  27. 27

    Converting 32-bit integer into array of four 8-bit integers in Python

  28. 28

    Is there an easy way to convert from 32bit integer to 16bit integer?

  29. 29

    Calculating value from 5-bit float representation

HotTag

Archive