package Ġcn . lab zen . cells . core . utils Ċ Ċ import Ġcn . lab zen . cells . core . utils . Strings . fill Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . Object InputStream Ċ import Ġjava . io . Object OutputStream Ċ import Ġjava . math . BigInteger Ċ import Ġjava . nio . charset . StandardCharsets Ċ Ċ object ĠBytes Ġ{ ĊĊĠ Ġprivate Ġval Ġhex es Ġ= Ġchar ArrayOf ( ĊĠĠĠ Ġ' 0 ', ĊĠĠĠ Ġ' 1 ', ĊĠĠĠ Ġ' 2 ', ĊĠĠĠ Ġ' 3 ', ĊĠĠĠ Ġ' 4 ', ĊĠĠĠ Ġ' 5 ', ĊĠĠĠ Ġ' 6 ', ĊĠĠĠ Ġ' 7 ', ĊĠĠĠ Ġ' 8 ', ĊĠĠĠ Ġ' 9 ', ĊĠĠĠ Ġ' A ', ĊĠĠĠ Ġ' B ', ĊĠĠĠ Ġ' C ', ĊĠĠĠ Ġ' D ', ĊĠĠĠ Ġ' E ', ĊĠĠĠ Ġ' F ' ĊĠ Ġ) ĊĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åįģ åħŃ è¿ĽåĪ¶ ä¸² è½¬ åĮĸ ä¸º byte æķ°ç»Ħ ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġhex StringTo Bytes ( hex : ĠString ): ĠByteArray Ġ= ĊĠĠĠ Ġhex . trim (). let Ġ{ ĊĠĠĠĠĠ Ġrequire ( it . length Ġ% Ġ 2 Ġ== Ġ 0 ) ĊĊĠĠĠĠĠ Ġreturn ĠByteArray ( it . length Ġ/ Ġ 2 ) Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠ Ġit . substring ( i Ġ* Ġ 2 , Ġi Ġ* Ġ 2 Ġ+ Ġ 2 ). toInt ( 1 6 ). to Byte () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åŃĹèĬĤ æķ°ç»Ħ è½¬æį¢ ä¸º åįģ åħŃ è¿ĽåĪ¶ åŃĹç¬¦ä¸² ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Over loads ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġbytes To HexString ( bytes : ĠByteArray , Ġuppercase : ĠBoolean Ġ= Ġtrue ): ĠString Ġ= ĊĠĠĠ Ġbytes . join ToString ("") Ġ{ ĊĠĠĠĠĠ Ġ"${ hex es [ it . toInt () Ġshr Ġ 4 Ġand Ġ 0 x 0 f ]} ${ hex es [ it . toInt () Ġand Ġ 0 x 0 f ]}" ĊĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠ Ġif Ġ( uppercase ) Ġit . uppercase () Ġelse Ġit . lowercase () ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åįģ åħŃ è¿ĽåĪ¶ åŃĹç¬¦ä¸² è½¬ äºĮ è¿ĽåĪ¶ åŃĹç¬¦ä¸² ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġhex StringTo Binary String ( hex : ĠString ) Ġ= ĊĠĠĠ Ġhex . trim (). toCharArray (). join ToString ("") Ġ{ Ġc Ġ-> ĊĠĠĠĠĠ Ġval Ġxx Ġ= ĠInteger . valueOf ( c . toString (), Ġ 1 6 ) ĊĠĠĠĠĠ Ġfill ( Integer . to Binary String ( xx ), Ġ" 0 ", Ġ 4 ) ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åŃĹèĬĤ æķ°ç»Ħ è½¬ ASCII åŃĹç¬¦ä¸² ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġbytes To Ascii String ( bytes : ĠByteArray ): ĠString Ġ= ĊĠĠĠ ĠString ( bytes , ĠStandard Charsets . ISO _ 8 8 5 9 _ 1 ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠASCII åŃĹç¬¦ä¸² è½¬ åŃĹèĬĤ æķ°ç»Ħ ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġascii StringTo Bytes ( ascii : ĠString ): ĠByteArray Ġ= ĊĠĠĠ Ġascii . trim (). toCharArray (). map Ġ{ Ġit . code . to Byte () Ġ}. toByteArray () ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ æķ´ åŀĭ è½¬ åŃĹèĬĤ æķ°ç»Ħ ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġint ToBytes ( number : ĠInt ): ĠByteArray Ġ= ĊĠĠĠ ĠByteArray ( 4 ) Ġ{ ĊĠĠĠĠĠ Ġ( number Ġshr Ġ( it Ġ* Ġ 8 ) Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åŃĹèĬĤ æķ°ç»Ħ è½¬ æķ´ åŀĭ ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġbytes ToInt ( bytes : ĠByteArray ): ĠInt Ġ= ĊĠĠĠ Ġbytes . map Indexed Ġ{ Ġindex , Ġbyte Ġ-> ĊĠĠĠĠĠ Ġ( byte . toInt () Ġand Ġ 0 xff ) Ġshl Ġ( index Ġ* Ġ 8 ) ĊĠĠĠ Ġ}. sum () ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġå¤§ æķ´ å½¢ è½¬ åŃĹèĬĤ æķ°ç»Ħ ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġbig Int ToBytes ( number : ĠBigInteger ): ĠByteArray Ġ= ĊĠĠĠ Ġnumber . toByteArray (). let Ġ{ ĊĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġit . size Ġ== Ġ 3 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠByteArray ( 3 2 ) ĊĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( it , Ġ 1 , Ġdata , Ġ 0 , Ġ 3 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġdata ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit . size Ġ< Ġ 3 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠByteArray ( 3 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 3 2 Ġ- Ġit . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ i ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( it , Ġ 0 , Ġdata , Ġ 3 2 Ġ- Ġit . size , Ġit . size ) ĊĠĠĠĠĠĠĠĠĠ Ġdata ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġit ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åŃĹèĬĤ æķ°ç»Ħ è½¬ å¤§ æķ´ å½¢ ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġbytes To BigInt ( bytes : ĠByteArray ): ĠBigInteger Ġ= ĊĠĠĠ Ġif Ġ( bytes [ 0 ] Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġval Ġdata Ġ= ĠByteArray ( bytes . size Ġ+ Ġ 1 ) ĊĠĠĠĠĠ Ġdata [ 0 ] Ġ= Ġ 0 ĊĠĠĠĠĠ ĠSystem . arraycopy ( bytes , Ġ 0 , Ġdata , Ġ 1 , Ġbytes . size ) ĊĠĠĠĠĠ ĠBigInteger ( data ) ĊĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠ ĠBigInteger ( bytes ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ éķ¿ æķ´ åŀĭ è½¬ åŃĹèĬĤ æķ°ç»Ħ ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġlong ToBytes ( number : ĠLong ): ĠByteArray Ġ= ĊĠĠĠ ĠByteArray ( 8 ) Ġ{ ĊĠĠĠĠĠ Ġ( number Ġshr Ġ( it Ġ* Ġ 8 ) Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åŃĹèĬĤ æķ°ç»Ħ è½¬ éķ¿ æķ´ åŀĭ ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġbytes To Long ( bytes : ĠByteArray ): ĠLong Ġ= ĊĠĠĠ Ġbytes . map Indexed Ġ{ Ġindex , Ġbyte Ġ-> ĊĠĠĠĠĠ Ġ( byte . to Long () Ġand Ġ 0 xff ) Ġshl Ġ( index Ġ* Ġ 8 ) ĊĠĠĠ Ġ}. sum () ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ ä»»æĦı å¯¹è±¡ ï¼Ī Serializable ) è½¬æį¢ ä¸º åŃĹèĬĤ æķ°ç»Ħ ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġobject ToBytes ( obj : ĠAny ): ĠByteArray Ġ= ĊĠĠĠ ĠByteArrayOutputStream (). use Ġ{ Ġbyte OS Ġ-> ĊĠĠĠĠĠ ĠObject OutputStream ( byte OS ). use Ġ{ Ġobject OS Ġ-> ĊĠĠĠĠĠĠĠ Ġobject OS . write Object ( obj ) ĊĠĠĠĠĠĠĠ Ġbyte OS . toByteArray () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åŃĹèĬĤ æķ°ç»Ħ è¿ĺ åİŁ ä»»æĦı å¯¹è±¡ ï¼Ī Serializable ) ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġbytes ToObject ( bytes : ĠByteArray ): ĠAny Ġ= ĊĠĠĠ ĠByteArrayInputStream ( bytes ). use Ġ{ Ġbyte IS Ġ-> ĊĠĠĠĠĠ ĠObject InputStream ( byte IS ). use Ġ{ Ġobject IS Ġ-> ĊĠĠĠĠĠĠĠ Ġobject IS . read Object () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ