AS3 计算纵向冗余校验 (LRC) - 插座

AS3 Calculate Longitudinal Redundancy Check (LRC) - Socket

提问人:Speego 提问时间:8/16/2023 最后编辑:Speego 更新时间:8/16/2023 访问量:25

问:

我需要发送到套接字:

<STX>PIPE_DELIMITED_MESSAGE<ETX><LRC>

STX = String.fromCharCode(02) //// **Good**
ETX­ = String.fromCharCode(03) //// **Good**
LRC = Unable to calculate correctly

请求:LRC 是所有字节的 8 位 EXCLUSIVE OR(二进制 ADD,不带 Carry)的结果,从 STX 之后的字节开始,包括消息的最终 ETX。

我在下面使用,但不正确。关于 AS3 的信息不多。

function generate_lrc(string: String) {
    var lrc = 0
    var text = string.split('');
    for (var i: Number = 0; i < text.length; i++) {
        lrc ^= text[i].charCodeAt(0);
    }
    trace('lrc = ' + lrc);
    return lrc;
}

任何帮助将不胜感激,谢谢!

ActionScript-3 AS3加密

评论


答:

2赞 Organis 8/16/2023 #1

我看不出脚本有问题(您不必拆分字符串,但无论如何)。您可以做的是跟踪所有来龙去脉,如下所示:

function generate_lrc(source:String):uint
{
    var lrc:uint = 0;
    
    for (var i:int = 0; i < source.length; i++)
    {
        var aChar:String = source.charAt(i);
        var aByte:uint = source.charCodeAt(i);
        var newLrc:uint = lrc ^ aByte;
        
        trace(aChar + ":", lrc.toString(2), "XOR", aByte.toString(2), "=", newLrc.toString(2));
        
        lrc = newLrc;
    }
    
    return lrc;
}

评论

0赞 Speego 8/16/2023
谢谢你享受本周剩下的时间!!!!!