endianness - How do I swap endian-ness (byte order) of a variable in javascript -


i receiving , sending decimal representation of 2 little endian numbers. to:

  • shift 1 variable 8 bits left
  • or them
  • shift variable number of bits
  • create 2 8 bit numbers representing first , second half of 16 bit number.

javascript (according https://developer.mozilla.org/en/javascript/reference/operators/bitwise_operators) uses big endian representation when shifting...

endianness bit foreign me (i 90 percent sure outlined steps want.) swapping bit dizzying. please help! need know how swap order in efficient manner. (i can think of using loop on tostring() return value)

function swap16(val) {     return ((val & 0xff) << 8)            | ((val >> 8) & 0xff); } 

explanation:

  1. let's val is, example, 0xaabb.
  2. mask val lsb &ing 0xff: result 0xbb.
  3. shift result 8 bits left: result 0xbb00.
  4. shift val 8 bits right: result 0xaa (the lsb has "dropped off" right-hand side).
  5. mask result lsb &ing 0xff: result 0xaa.
  6. combine results steps 3 , step 5 |ing them together:
    0xbb00 | 0xaa 0xbbaa.

function swap32(val) {     return ((val & 0xff) << 24)            | ((val & 0xff00) << 8)            | ((val >> 8) & 0xff00)            | ((val >> 24) & 0xff); } 

explanation:

  1. let's val is, example, 0xaabbccdd.
  2. mask val lsb &ing 0xff: result 0xdd.
  3. shift result 24 bits left: result 0xdd000000.
  4. mask val second byte &ing 0xff00: result 0xcc00.
  5. shift result 8 bits left: result 0xcc0000.
  6. shift val 8 bits right: result 0xaabbcc (the lsb has "dropped off" right-hand side).
  7. mask result second byte &ing 0xff00: result 0xbb00.
  8. shift val 24 bits right: result 0xaa (everything except msb has "dropped off" right-hand side).
  9. mask result lsb &ing 0xff: result 0xaa.
  10. combine results steps 3, 5, 7 , 9 |ing them together:
    0xdd000000 | 0xcc0000 | 0xbb00 | 0xaa 0xddccbbaa.

Comments

Popular posts from this blog

python - How to create a legend for 3D bar in matplotlib? -

java - Multi-Label Document Classification -

php - Dynamic url re-writing using htaccess -