package Ġutil Ċ Ċ /** Ċ Ġ* ĠOutput ĠByteArray Ġwith Ġsize Ġ== Ġ 4 Ċ Ġ*/ Ċ fun ĠInt . toByteArray 4 (): ĠByteArray Ġ= ĊĠĠĠ Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠ Ġ( this Ġ ush r Ġ 0 ). to Byte (), ĊĠĠĠĠĠĠĠ Ġ( this Ġ ush r Ġ 8 ). to Byte (), ĊĠĠĠĠĠĠĠ Ġ( this Ġ ush r Ġ 1 6 ). to Byte (), ĊĠĠĠĠĠĠĠ Ġ( this Ġ ush r Ġ 2 4 ). to Byte () ĊĠĠĠ Ġ) Ċ Ċ /** Ċ Ġ* ĠInput ĠByteArray Ġwith Ġsize Ġ== Ġ 4 Ċ Ġ*/ Ċ fun ĠByteArray . byteArray 4 toInt (): ĠInt Ġ= ĊĠĠĠ Ġ( get ( 0 ). to U Byte (). toInt () Ġshl Ġ 0 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( get ( 1 ). to U Byte (). toInt () Ġshl Ġ 8 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( get ( 2 ). to U Byte (). toInt () Ġshl Ġ 1 6 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( get ( 3 ). to U Byte (). toInt () Ġshl Ġ 2 4 ) Ċ Ċ fun ĠByteArray . split By 1 6 Byte Block (): ĠList < ByteArray > Ġ{ ĊĠĠĠ Ġreturn Ġsequence Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize Ġstep Ġ 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbegin Block Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Block Exclusive Ġ= Ġkotlin . math . min (( i Ġ+ Ġ 1 6 ), Ġsize ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġcopy Of Range ( begin Block , Ġend Block Exclusive ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . size Ġ< Ġ 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ+= ĠByteArray ( 1 6 Ġ- Ġresult . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. toList () Ċ Ċ // ĠĠĠ Ġthis . slice Array ( 0 .. 1 5 ) Ċ // ĠĠĠ Ġto List (). window ed ( 1 6 , Ġ 1 6 , Ġtrue ) Ċ } Ċ Ċ fun ĠList < ByteArray >. join () Ġ= Ġreduce Ġ{ Ġacc , Ġnext Ġ-> Ġacc Ġ+ Ġnext Ġ} Ċ