提问人:Speego 提问时间:8/16/2023 最后编辑:Speego 更新时间:8/16/2023 访问量:25
AS3 计算纵向冗余校验 (LRC) - 插座
AS3 Calculate Longitudinal Redundancy Check (LRC) - Socket
问:
我需要发送到套接字:
<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;
}
任何帮助将不胜感激,谢谢!
答:
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
谢谢你享受本周剩下的时间!!!!!
评论