Upgrade to Pro — share decks privately, control downloads, hide ads and more …

低レベルなKotlin

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

 低レベルなKotlin

Avatar for Tomoya Miwa

Tomoya Miwa

July 03, 2018

More Decks by Tomoya Miwa

Other Decks in Programming

Transcript

  1. NG

  2. OK

  3. 次

  4. 送信︓Aデバイス 1. 0x80, 0x01, 0x02, 0x84 を全部⾜す -> 0x0107 2.

    0x0107 の下位1byteを取り出す -> 0x07 3. 計算結果をチェックサム値とし、送信フォーマットに合わせて送信 送信したパケット データ部サイズ (1byte) データ部(0〜 255byte) チェックサム(1byte) 0x04 0x80,0x01,0x02,0x84 0x07
  5. in Kotlin 2の補数表現の事を考慮して・・・ // 通信して受信したByteArrayだとする val received = read() val

    size = received[0] val body = received.slice(1 until size + 1) val checkSum = received[size + 1] val sum = body.map { it.toLong() and 0xff }.sum() val isValid = (sum and 0xff) == (checkSum.toLong() and 0xff) println(isValid)
  6. OK

  7. これでも良さそう ということに資料作っている内に気付きました・・・ // 通信して受信したByteArrayだとする val received = read() val size

    = received[0] val body = received.slice(1 until size + 1) val checkSum = received[size + 1] //val sum = body.map { it.toLong() and 0xff }.sum() val sum = body.sum() //val isValid = (sum and 0xff) == (checkSum.toLong() and 0xff) val isValid = sum and 0xff == checkSum.toInt() println(isValid)