during the import of a complex file format I handle ByteArray or lists of byte values. While I can easy transform them from one type to each other: ``` ba=ByteArray[{1,2,3,4,5,6}]; Normal[ba] ``` I have problems taking specific bytes of my list and converting them according a given number format e.g. Integer8, Integer32 or Real32. ``` Normal@ba[[1;;2]] (*Shall interpretet as Integer16*) Normal@ba[[3;;6]] (*Shall interpretet as Real32*) ``` Is there an internal and elegant way to do so? I wrote a workaround for Integer numbers like below but I would guess an internal solution will be way more efficient ... ``` ByteToInteger[byteArray_,LSBStart_:True,bitSize_:16,signed_:False] := Module[{i,array=byteArray,value=0}, (*Reverse for LSB*) If[LSBStart==False, array=Reverse[array]; ]; array=PadLeft[array,bitSize] (*calculate Unsigned value*) value=array[[1]]; For[i=2,i<=Length@array,i++, value=value+array[[i]]*256^(i-1) ]; (*adapt to signed if needed*) If[signed==True&&value>=2^(bitSize-1), value=-(2^bitSize-(value-2^(bitSize-1))) ]; value ] ``` I am open to any suggestions ...