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

低レベルなKotlin

 低レベルなKotlin

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)