/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 , ĠN ord ic ĠSem icon duct or Ċ Ġ* ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠRedistribution Ġand Ġuse Ġin Ġsource Ġand Ġbinary Ġforms , Ġwith Ġor Ġwithout Ġmodification , Ġare Ġpermitted Ġprovided Ġthat Ġthe Ġfollowing Ġconditions Ġare Ġmet : Ċ Ġ* Ċ Ġ* Ġ 1 . ĠRedistributions Ġof Ġsource Ġcode Ġmust Ġretain Ġthe Ġabove Ġcopyright Ġnotice , Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer . Ċ Ġ* Ċ Ġ* Ġ 2 . ĠRedistributions Ġin Ġbinary Ġform Ġmust Ġreproduce Ġthe Ġabove Ġcopyright Ġnotice , Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer Ġin Ġthe Ċ Ġ* Ġdocumentation Ġand / or Ġother Ġmaterials Ġprovided Ġwith Ġthe Ġdistribution . Ċ Ġ* Ċ Ġ* Ġ 3 . ĠNeither Ġthe Ġname Ġof Ġthe Ġcopyright Ġholder Ġnor Ġthe Ġnames Ġof Ġits Ġcontributors Ġmay Ġbe Ġused Ġto Ġendorse Ġor Ġpromote Ġproducts Ġderived Ġfrom Ġthis Ċ Ġ* Ġsoftware Ġwithout Ġspecific Ġprior Ġwritten Ġpermission . Ċ Ġ* Ċ Ġ* ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ġ" AS ĠIS " ĠAND ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT Ċ Ġ* ĠLIMITED ĠTO , ĠTHE ĠIMPLIED ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠARE ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT Ċ Ġ* ĠHOLDER ĠOR ĠCONTRIBUTORS ĠBE ĠLIABLE ĠFOR ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL ĠDAMAGES Ġ( INCLUDING , ĠBUT ĠNOT Ċ Ġ* ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR ĠSERVICES ; ĠLOSS ĠOF ĠUSE , ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER ĠCAUSED ĠAND ĠON Ċ Ġ* ĠANY ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , ĠOR ĠTORT Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE Ċ Ġ* ĠUSE ĠOF ĠTHIS ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ Ġ*/ Ċ Ċ package Ġno . n ord ic semi . android . ble . data Ċ Ċ import Ġandroid . bluetooth . Bluetooth GattCharacteristic Ċ import Ġandroid . bluetooth . Bluetooth Gatt Descriptor Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . os . Parcelable Ċ Ċ import Ġandroidx . annotation . Int Def Ċ import Ġandroidx . annotation . Int Range Ċ Ċ import Ġjava . lang . annotation . Retention Ċ import Ġjava . lang . annotation . RetentionPolicy Ċ import Ġkotlin . experimental . and Ċ Ċ open Ġclass ĠData Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġunderlying Ġbyte Ġarray . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠData Ġreceived . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġvalue : ĠByteArray ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( value : ĠByteArray ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠParcel able ĊĠĠĠ Ġprotected Ġconstructor (` in `: ĠParcel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ` in `. create ByteArray () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġthe Ġstored Ġvalue Ġof Ġthis Ġcharacteristic . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġ[. getValue ] Ġfor Ġdetails . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoffset ĠOffset Ġat Ġwhich Ġthe Ġstring Ġvalue Ġcan Ġbe Ġfound . ĊĠĠĠĠ Ġ* Ġ@ return ĠCached Ġvalue Ġof Ġthe Ġcharacteristic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget StringValue (@ Int Range ( from Ġ= Ġ 0 ) Ġoffset : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull Ġ|| Ġoffset Ġ> Ġvalue !!. size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġstr Bytes Ġ= ĠByteArray ( value !!. size Ġ- Ġoffset ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġvalue !!. size Ġ- Ġoffset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Bytes [ i ] Ġ= Ġvalue ! ![ offset Ġ+ Ġi ] ĊĠĠĠĠĠĠĠ Ġreturn ĠString ( str Bytes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġsize Ġof Ġunderlying Ġbyte Ġarray . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠLength Ġof Ġthe Ġdata . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( value Ġ!= Ġnull ) Ġvalue !!. size Ġelse Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( size () Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĊĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠChar Array ( value !!. size Ġ* Ġ 3 Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġvalue !!. indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġv Ġ= Ġ( data [ j ] Ġand Ġ 0 xFF . to Byte ()). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ġ+= Ġ 2 5 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout [ j Ġ* Ġ 3 ] Ġ= ĠHEX _ ARRAY [ v . ush r ( 4 )] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout [ j Ġ* Ġ 3 Ġ+ Ġ 1 ] Ġ= ĠHEX _ ARRAY [( v Ġand Ġ 0 x 0 F ). toInt ()] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ!= Ġvalue !!. size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout [ j Ġ* Ġ 3 Ġ+ Ġ 2 ] Ġ= Ġ'-' ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"( 0 x ) Ġ" Ġ+ ĠString ( out ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġbyte Ġat Ġthe Ġgiven Ġoffset Ġfrom Ġthe Ġbyte Ġarray . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoffset ĠOffset Ġat Ġwhich Ġthe Ġbyte Ġvalue Ġcan Ġbe Ġfound . ĊĠĠĠĠ Ġ* Ġ@ return ĠCached Ġvalue Ġor Ġnull Ġof Ġoffset Ġexceeds Ġvalue Ġsize . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Byte (@ Int Range ( from Ġ= Ġ 0 ) Ġoffset : ĠInt ): ĠByte ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( offset Ġ+ Ġ 1 Ġ> Ġsize ()) Ġnull Ġelse Ġvalue ! ![ offset ] ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġinteger Ġvalue Ġfrom Ġthe Ġbyte Ġarray . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġformat Type Ġparameter Ġdetermines Ġhow Ġthe Ġvalue ĊĠĠĠĠ Ġ* Ġis Ġto Ġbe Ġinterpreted . ĠFor Ġexample , Ġsetting Ġformat Type Ġto ĊĠĠĠĠ Ġ* Ġ[. FORMAT _ UINT 1 6 ] Ġspecifies Ġthat Ġthe Ġfirst Ġtwo Ġbytes Ġof Ġthe ĊĠĠĠĠ Ġ* Ġvalue Ġat Ġthe Ġgiven Ġoffset Ġare Ġinterpreted Ġto Ġgenerate Ġthe ĊĠĠĠĠ Ġ* Ġreturn Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġformat Type ĠThe Ġformat Ġtype Ġused Ġto Ġinterpret Ġthe Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ param Ġoffset ĠĠĠĠ ĠOffset Ġat Ġwhich Ġthe Ġinteger Ġvalue Ġcan Ġbe Ġfound . ĊĠĠĠĠ Ġ* Ġ@ return ĠCached Ġvalue Ġor Ġnull Ġof Ġoffset Ġexceeds Ġvalue Ġsize . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Int Value ( ĊĠĠĠĠĠĠĠ Ġ@ Int Format Ġformat Type : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Int Range ( from Ġ= Ġ 0 ) Ġoffset : ĠInt ĊĠĠĠ Ġ): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( offset Ġ+ ĠgetType Len ( format Type ) Ġ> Ġsize ()) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( format Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFORMAT _ UINT 8 Ġ-> Ġreturn Ġunsigned Byte ToInt ( value ! ![ offset ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFORMAT _ UINT 1 6 Ġ-> Ġreturn Ġunsigned Bytes ToInt ( value ! ![ offset ], Ġvalue ! ![ offset Ġ+ Ġ 1 ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFORMAT _ UINT 2 4 Ġ-> Ġreturn Ġunsigned Bytes ToInt ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset ], Ġvalue ! ![ offset Ġ+ Ġ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset Ġ+ Ġ 2 ], Ġ 0 . to Byte () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFORMAT _ UINT 3 2 Ġ-> Ġreturn Ġunsigned Bytes ToInt ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset ], Ġvalue ! ![ offset Ġ+ Ġ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset Ġ+ Ġ 2 ], Ġvalue ! ![ offset Ġ+ Ġ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFORMAT _ S INT 8 Ġ-> Ġreturn Ġunsigned To Signed ( unsigned Byte ToInt ( value ! ![ offset ]), Ġ 8 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFORMAT _ S INT 1 6 Ġ-> Ġreturn Ġunsigned To Signed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunsigned Bytes ToInt ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset Ġ+ Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġ 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFORMAT _ S INT 2 4 Ġ-> Ġreturn Ġunsigned To Signed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunsigned Bytes ToInt ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset Ġ+ Ġ 1 ], Ġvalue ! ![ offset Ġ+ Ġ 2 ], Ġ 0 . to Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġ 2 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFORMAT _ S INT 3 2 Ġ-> Ġreturn Ġunsigned To Signed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunsigned Bytes ToInt ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset Ġ+ Ġ 1 ], Ġvalue ! ![ offset Ġ+ Ġ 2 ], Ġvalue ! ![ offset Ġ+ Ġ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġ 3 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġlong Ġvalue Ġfrom Ġthe Ġbyte Ġarray . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOnly Ġ[. FORMAT _ UINT 3 2 ] Ġand Ġ[. FORMAT _ S INT 3 2 ] Ġare Ġsupported . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġformat Type Ġparameter Ġdetermines Ġhow Ġthe Ġvalue ĊĠĠĠĠ Ġ* Ġis Ġto Ġbe Ġinterpreted . ĠFor Ġexample , Ġsetting Ġformat Type Ġto ĊĠĠĠĠ Ġ* Ġ[. FORMAT _ UINT 3 2 ] Ġspecifies Ġthat Ġthe Ġfirst Ġfour Ġbytes Ġof Ġthe ĊĠĠĠĠ Ġ* Ġvalue Ġat Ġthe Ġgiven Ġoffset Ġare Ġinterpreted Ġto Ġgenerate Ġthe ĊĠĠĠĠ Ġ* Ġreturn Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġformat Type ĠThe Ġformat Ġtype Ġused Ġto Ġinterpret Ġthe Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ param Ġoffset ĠĠĠĠ ĠOffset Ġat Ġwhich Ġthe Ġinteger Ġvalue Ġcan Ġbe Ġfound . ĊĠĠĠĠ Ġ* Ġ@ return ĠCached Ġvalue Ġor Ġnull Ġof Ġoffset Ġexceeds Ġvalue Ġsize . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Long Value ( ĊĠĠĠĠĠĠĠ Ġ@ Long Format Ġformat Type : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Int Range ( from Ġ= Ġ 0 ) Ġoffset : ĠInt ĊĠĠĠ Ġ): ĠLong ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( offset Ġ+ ĠgetType Len ( format Type ) Ġ> Ġsize ()) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( format Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFORMAT _ S INT 3 2 Ġ-> Ġreturn Ġunsigned To Signed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunsigned Bytes To Long ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset Ġ+ Ġ 1 ], Ġvalue ! ![ offset Ġ+ Ġ 2 ], Ġvalue ! ![ offset Ġ+ Ġ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġ 3 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFORMAT _ UINT 3 2 Ġ-> Ġreturn Ġunsigned Bytes To Long ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset ], Ġvalue ! ![ offset Ġ+ Ġ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset Ġ+ Ġ 2 ], Ġvalue ! ![ offset Ġ+ Ġ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġfloat Ġvalue Ġfrom Ġthe Ġgiven Ġbyte Ġarray . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġformat Type ĠThe Ġformat Ġtype Ġused Ġto Ġinterpret Ġthe Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ param Ġoffset ĠĠĠĠ ĠOffset Ġat Ġwhich Ġthe Ġfloat Ġvalue Ġcan Ġbe Ġfound . ĊĠĠĠĠ Ġ* Ġ@ return ĠCached Ġvalue Ġat Ġa Ġgiven Ġoffset Ġor Ġnull Ġif Ġthe Ġrequested Ġoffset Ġexceeds Ġthe Ġvalue Ġsize . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Float Value ( ĊĠĠĠĠĠĠĠ Ġ@ Float Format Ġformat Type : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Int Range ( from Ġ= Ġ 0 ) Ġoffset : ĠInt ĊĠĠĠ Ġ): ĠFloat ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( offset Ġ+ ĠgetType Len ( format Type ) Ġ> Ġsize ()) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( format Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFORMAT _ S FLOAT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value ! ![ offset Ġ+ Ġ 1 ]. toInt () Ġ== Ġ 0 x 0 7 Ġ&& Ġvalue ! ![ offset ] Ġ== Ġ 0 xFE . to Byte ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . lang . Float . POSITIVE _ INFINITY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value ! ![ offset Ġ+ Ġ 1 ]. toInt () Ġ== Ġ 0 x 0 7 Ġ&& Ġvalue ! ![ offset ] Ġ== Ġ 0 xFF . to Byte () Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset Ġ+ Ġ 1 ]. toInt () Ġ== Ġ 0 x 0 8 Ġ&& Ġvalue ! ![ offset ]. toInt () Ġ== Ġ 0 x 0 0 Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset Ġ+ Ġ 1 ]. toInt () Ġ== Ġ 0 x 0 8 Ġ&& Ġvalue ! ![ offset ]. toInt () Ġ== Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . lang . Float . NaN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( value ! ![ offset Ġ+ Ġ 1 ]. toInt () Ġ== Ġ 0 x 0 8 Ġ&& Ġvalue ! ![ offset ]. toInt () Ġ== Ġ 0 x 0 2 ) Ġjava . lang . Float . NEGATIVE _ INFINITY Ġelse Ġbytes To Float ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset Ġ+ Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFORMAT _ FLOAT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value ! ![ offset Ġ+ Ġ 3 ]. toInt () Ġ== Ġ 0 x 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value ! ![ offset Ġ+ Ġ 2 ]. toInt () Ġ== Ġ 0 x 7 F Ġ&& Ġvalue ! ![ offset Ġ+ Ġ 1 ] Ġ== Ġ 0 xFF . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value ! ![ offset ] Ġ== Ġ 0 xFE . to Byte ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . lang . Float . POSITIVE _ INFINITY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value ! ![ offset ] Ġ== Ġ 0 xFF . to Byte ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . lang . Float . NaN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value ! ![ offset Ġ+ Ġ 2 ] Ġ== Ġ 0 x 8 0 . to Byte () Ġ&& Ġvalue ! ![ offset Ġ+ Ġ 1 ]. toInt () Ġ== Ġ 0 x 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value ! ![ offset ]. toInt () Ġ== Ġ 0 x 0 0 Ġ|| Ġvalue ! ![ offset ]. toInt () Ġ== Ġ 0 x 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . lang . Float . NaN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value ! ![ offset ]. toInt () Ġ== Ġ 0 x 0 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . lang . Float . NEGATIVE _ INFINITY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbytes To Float ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset ], Ġvalue ! ![ offset Ġ+ Ġ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ! ![ offset Ġ+ Ġ 2 ], Ġvalue ! ![ offset Ġ+ Ġ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo Parcel ( dest : ĠParcel , Ġflags : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdest . write ByteArray ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdescribe Contents (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Retention ( RetentionPolicy . SOURCE ) ĊĠĠĠ Ġ@ Int Def ( value Ġ= Ġ[ FORMAT _ UINT 8 , ĠFORMAT _ UINT 1 6 , ĠFORMAT _ UINT 2 4 , ĠFORMAT _ UINT 3 2 , ĠFORMAT _ S INT 8 , ĠFORMAT _ S INT 1 6 , ĠFORMAT _ S INT 2 4 , ĠFORMAT _ S INT 3 2 , ĠFORMAT _ FLOAT , ĠFORMAT _ S FLOAT ]) ĊĠĠĠ Ġannotation Ġclass ĠValue Format ĊĊĠĠĠ Ġ@ Retention ( RetentionPolicy . SOURCE ) ĊĠĠĠ Ġ@ Int Def ( value Ġ= Ġ[ FORMAT _ UINT 8 , ĠFORMAT _ UINT 1 6 , ĠFORMAT _ UINT 2 4 , ĠFORMAT _ UINT 3 2 , ĠFORMAT _ S INT 8 , ĠFORMAT _ S INT 1 6 , ĠFORMAT _ S INT 2 4 , ĠFORMAT _ S INT 3 2 ]) ĊĠĠĠ Ġannotation Ġclass ĠInt Format ĊĊĠĠĠ Ġ@ Retention ( RetentionPolicy . SOURCE ) ĊĠĠĠ Ġ@ Int Def ( value Ġ= Ġ[ FORMAT _ UINT 3 2 , ĠFORMAT _ S INT 3 2 ]) ĊĠĠĠ Ġannotation Ġclass ĠLong Format ĊĊĠĠĠ Ġ@ Retention ( RetentionPolicy . SOURCE ) ĊĠĠĠ Ġ@ Int Def ( value Ġ= Ġ[ FORMAT _ FLOAT , ĠFORMAT _ S FLOAT ]) ĊĠĠĠ Ġannotation Ġclass ĠFloat Format ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠData Ġvalue Ġformat Ġtype Ġuint 8 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFORMAT _ UINT 8 Ġ= Ġ 0 x 1 1 ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠData Ġvalue Ġformat Ġtype Ġuint 1 6 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFORMAT _ UINT 1 6 Ġ= Ġ 0 x 1 2 ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠData Ġvalue Ġformat Ġtype Ġuint 2 4 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFORMAT _ UINT 2 4 Ġ= Ġ 0 x 1 3 ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠData Ġvalue Ġformat Ġtype Ġuint 3 2 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFORMAT _ UINT 3 2 Ġ= Ġ 0 x 1 4 ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠData Ġvalue Ġformat Ġtype Ġsint 8 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFORMAT _ S INT 8 Ġ= Ġ 0 x 2 1 ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠData Ġvalue Ġformat Ġtype Ġsint 1 6 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFORMAT _ S INT 1 6 Ġ= Ġ 0 x 2 2 ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠData Ġvalue Ġformat Ġtype Ġsint 2 4 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFORMAT _ S INT 2 4 Ġ= Ġ 0 x 2 3 ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠData Ġvalue Ġformat Ġtype Ġsint 3 2 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFORMAT _ S INT 3 2 Ġ= Ġ 0 x 2 4 ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠData Ġvalue Ġformat Ġtype Ġs float Ġ( 1 6 - bit Ġfloat , ĠIEEE - 1 1 0 7 3 ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFORMAT _ S FLOAT Ġ= Ġ 0 x 3 2 ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠData Ġvalue Ġformat Ġtype Ġfloat Ġ( 3 2 - bit Ġfloat , ĠIEEE - 1 1 0 7 3 ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFORMAT _ FLOAT Ġ= Ġ 0 x 3 4 ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠCRE ATOR : ĠParcel able . Creator < Data > Ġ= Ġobject Ġ: ĠParcel able . Creator < Data > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate From Parcel (` in `: ĠParcel ): ĠData Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠData (` in `) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Array ( size : ĠInt ): ĠArray < Data ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf Null s ( size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠHEX _ ARRAY Ġ= Ġ" 0 1 2 3 4 5 6 7 8 9 ABCDEF ". toCharArray () ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( value : ĠString ): ĠData Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠData ( value . toByteArray ()) Ġ// ĠUTF - 8 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( character istic : ĠBluetooth GattCharacteristic ): ĠData Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠData ( character istic . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( descriptor : ĠBluetooth Gatt Descriptor ): ĠData Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠData ( descriptor . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġop Code ( op Code : ĠByte ): ĠData Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠData ( byte ArrayOf ( op Code )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġop Code ( op Code : ĠByte , Ġparameter : ĠByte ): ĠData Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠData ( byte ArrayOf ( op Code , Ġparameter )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthe Ġsize Ġof Ġa Ġgive Ġvalue Ġtype . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠgetType Len (@ Value Format Ġformat Type : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġformat Type Ġand Ġ 0 xF ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConvert Ġa Ġsigned Ġbyte Ġto Ġan Ġunsigned Ġint . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġunsigned Byte ToInt ( b : ĠByte ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ( b Ġand Ġ 0 xFF . to Byte ()). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( value Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ+= Ġ 2 5 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConvert Ġa Ġsigned Ġbyte Ġto Ġan Ġunsigned Ġint . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġunsigned Byte To Long ( b : ĠByte ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ( b Ġand Ġ 0 xFF L . to Byte ()). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( value Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ+= Ġ 2 5 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConvert Ġsigned Ġbytes Ġto Ġa Ġ 1 6 - bit Ġunsigned Ġint . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġunsigned Bytes ToInt ( b 0 : ĠByte , Ġb 1 : ĠByte ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġunsigned Byte ToInt ( b 0 ) Ġ+ Ġ( unsigned Byte ToInt ( b 1 ) Ġshl Ġ 8 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConvert Ġsigned Ġbytes Ġto Ġa Ġ 3 2 - bit Ġunsigned Ġint . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġunsigned Bytes ToInt ( b 0 : ĠByte , Ġb 1 : ĠByte , Ġb 2 : ĠByte , Ġb 3 : ĠByte ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( unsigned Byte ToInt ( b 0 ) Ġ+ Ġ( unsigned Byte ToInt ( b 1 ) Ġshl Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ( unsigned Byte ToInt ( b 2 ) Ġshl Ġ 1 6 ) Ġ+ Ġ( unsigned Byte ToInt ( b 3 ) Ġshl Ġ 2 4 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConvert Ġsigned Ġbytes Ġto Ġa Ġ 3 2 - bit Ġunsigned Ġlong . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġunsigned Bytes To Long ( b 0 : ĠByte , Ġb 1 : ĠByte , Ġb 2 : ĠByte , Ġb 3 : ĠByte ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( unsigned Byte To Long ( b 0 ) Ġ+ Ġ( unsigned Byte To Long ( b 1 ) Ġshl Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ( unsigned Byte To Long ( b 2 ) Ġshl Ġ 1 6 ) Ġ+ Ġ( unsigned Byte To Long ( b 3 ) Ġshl Ġ 2 4 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConvert Ġsigned Ġbytes Ġto Ġa Ġ 1 6 - bit Ġshort Ġfloat Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbytes To Float ( b 0 : ĠByte , Ġb 1 : ĠByte ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm antis sa Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunsigned To Signed ( unsigned Byte ToInt ( b 0 ) Ġ+ Ġ( unsigned Byte ToInt ( b 1 ) Ġand Ġ 0 x 0 F Ġshl Ġ 8 ), Ġ 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexponent Ġ= Ġunsigned To Signed ( unsigned Byte ToInt ( b 1 ) Ġshr Ġ 4 , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( m antis sa Ġ* ĠMath . pow ( 1 0 . 0 , Ġexponent . toDouble ())). toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConvert Ġsigned Ġbytes Ġto Ġa Ġ 3 2 - bit Ġshort Ġfloat Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbytes To Float ( b 0 : ĠByte , Ġb 1 : ĠByte , Ġb 2 : ĠByte , Ġb 3 : ĠByte ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm antis sa Ġ= Ġunsigned To Signed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunsigned Byte ToInt ( b 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ( unsigned Byte ToInt ( b 1 ) Ġshl Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ( unsigned Byte ToInt ( b 2 ) Ġshl Ġ 1 6 ), Ġ 2 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( m antis sa Ġ* ĠMath . pow ( 1 0 . 0 , Ġb 3 . toDouble ())). toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConvert Ġan Ġunsigned Ġinteger Ġvalue Ġto Ġa Ġtwo 's - complement Ġencoded ĊĠĠĠĠĠĠĠĠ Ġ* Ġsigned Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġunsigned To Signed ( unsigned : ĠInt , Ġsize : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġunsigned Ġ= Ġunsigned ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( unsigned Ġand Ġ( 1 Ġshl Ġsize Ġ- Ġ 1 ) Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunsigned Ġ= Ġ- 1 Ġ* Ġ(( 1 Ġshl Ġsize Ġ- Ġ 1 ) Ġ- Ġ( unsigned Ġand Ġ( 1 Ġshl Ġsize Ġ- Ġ 1 ) Ġ- Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġunsigned ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConvert Ġan Ġunsigned Ġlong Ġvalue Ġto Ġa Ġtwo 's - complement Ġencoded ĊĠĠĠĠĠĠĠĠ Ġ* Ġsigned Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġunsigned To Signed ( unsigned : ĠLong , Ġsize : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġunsigned Ġ= Ġunsigned ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( unsigned Ġand Ġ( 1 Ġshl Ġsize Ġ- Ġ 1 ). to Long () Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunsigned Ġ= Ġ- 1 Ġ* Ġ(( 1 Ġshl Ġsize Ġ- Ġ 1 ) Ġ- Ġ( unsigned Ġand Ġ( 1 Ġshl Ġsize Ġ- Ġ 1 ). to Long () Ġ- Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġunsigned ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ