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

低レベルなKotlin

 低レベルなKotlin

Avatar for Tomoya Miwa

Tomoya Miwa

July 03, 2018
Tweet

More Decks by Tomoya Miwa

Other Decks in Programming

Transcript

  1. NG

  2. OK

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

    0x0107 の下位1byteを取り出す -> 0x07 3. 計算結果をチェックサム値とし、送信フォーマットに合わせて送信 送信したパケット データ部サイズ (1byte) データ部(0〜 255byte) チェックサム(1byte) 0x04 0x80,0x01,0x02,0x84 0x07
  4. 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)
  5. OK

  6. これでも良さそう ということに資料作っている内に気付きました・・・ // 通信して受信した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)