byte[] array to uint16_t

Well...I better ask. I have to do quite a lot of things in MATLAB and there indices do start with 1...

I hope it's OK to ask a follow up question: Reversing the same thing, meaning creating a byte[2] of an uint16_t would then be:

 uint16_t val = 65535;

  byte low = val & 0xff;
  byte high = (val >> 8) & 0xff;

  byte[2] = {high, low}; // Order for Big Endian;

Or is there a more efficient way?

Best,
Andreas