Ruby on rails字节校验和

时间:2014-04-20 12:58:00

标签: ruby ruby-on-rails-3 bytearray

我有这个字节“\ x01 \ x01 \ x00 \ x00 \ x00 \ x01 \ x23”包 我需要发送它的校验和, 我还有校验和“\ x01 \ x01 \ x00 \ x00 \ x00 \ x01 \ x23 \ xDA”的数据包, 但我不知道如何计算此数据包或其他数据包的校验和,任何帮助! 谢谢

1 个答案:

答案 0 :(得分:3)

如果您想在此处获得快速回复,您应该更清楚地描述您的问题。即使在Neil向您询问校验和之后,您也没有清楚地描述校验和算法是如何工作的。

SEEMS 获取校验和的方法是

  1. 将数据包分成字节

    "\x01\x01\x00\x00\x00\x01\x23" => [1, 1, 0, 0, 0, 1, 35]

  2. 计算所有字节的总和=> 38,即0x26

  3. 将总和否定为带符号的字节=> 0xDA
  4. 这可能是一个解决方案:

    packet = "\x01\x01\x00\x00\x00\x01\x23"
    bytes = packet.bytes
    sum = bytes.reduce(:+)
    checksum = [ -sum ].pack('c')
    packet_with_checksum = packet + checksum
    

    如果在连接步骤中遇到编码错误,则可能需要packet.force_encoding('ASCII-8BIT')(或在checksum上)。