检查字节数组中的代码

时间:2018-02-01 06:58:48

标签: java android arrays bluetooth-lowenergy checksum

对于我的蓝牙通信,我需要一个字节数组的校验码/校验和。 蓝牙通信协议说:"校验码的指令:校验码=(0 - 期望整个字节的字节总和)"

this post的帮助下,我已经在swift中找到了一种工作方法:

var checksum: UInt8 {
    let cs: Int = self.map { Int($0) }.reduce(0, +) & 0xff

    if cs >= 1 && cs <= 255 {
        return UInt8( 256 - cs )
    } else {
        return UInt8(1)
    }
}

我必须承认,我正在从字节数组中解决校验和的整个概念,而且我不能用Java工作。

我遇到了java.util.stream类的方法,但该类要求api级别为24或更高,并且我希望使用23作为最小值,因为它仍然被广泛使用。

1 个答案:

答案 0 :(得分:0)

它看起来不是很好而且很流畅,但我确实有效:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        // On inputing value to textfield
        if ((textField.text?.characters.count)! < 1  && string.characters.count > 0 ){

            let nextTag = textField.tag + 1

            // get next responder
            var nextResponder = textField.superview?.viewWithTag(nextTag)

            if (nextResponder == nil){
                nextResponder = textField.superview?.viewWithTag(1)
            }
            textField.text = string;
            //resign at 4th textfield
            if textField.tag == 4{
                txt4.resignFirstResponder()
            }else{
                nextResponder?.becomeFirstResponder()
            }
            return false
        }
}