ais - 如何根据 AIS 140 标准计算校验和
问题描述
我想按照AIS 140
标准向服务器发送消息。请解释如何计算checksum
。在下面找到示例消息格式。
$Header,iTriangle,KA01I2000,861693034634154,1_37T02B0164MAIS,AIS140,12.976545,N,77.5497 59,E*50
解决方案
根据AIS140 标准校验和是通过对从数据包接收到的所有字节执行异或来计算的。
注意:您必须删除'$'。
注意:使用来自设备的数据来验证此代码(文档提供的示例没有有效的校验和)
此 Javascript 代码将帮助您完成工作。
function checksum(packet) {
const charArray = packet.split('');
let xor = 0;
const n = charArray.length;
for (let i = 1; i < n - 3; i++) {
xor = xor ^ charArray[i].charCodeAt(0);
}
const cs = parseInt("0x" + charArray[n - 2] + charArray[n - 1]);
return xor === cs;
}
checksum('$Header,iTriangle,KA01I2000,861693034634154,1_37T02B0164MAIS,AIS140,12.976545,N,77.549759,E*50')
推荐阅读
- html - 如何正确居中和旋转 SVG 圆并将多边形居中在圆的中心?
- sql-server - 将 Int 数据类型转换为日期
- python - 有效地将大型 Pandas DataFrame 列从 float 转换为 int
- css - 仅在一个反应组件中覆盖引导 css
- javascript - 未捕获的 ReferenceError:未定义 videojs
- flutter - Flutter Codemagic IOS 签名失败
- java - 在java中等待/睡眠直到特定时间(例如星期四10:59)
- apache-spark - Gradle:在不丢失传递依赖的情况下遮蔽番石榴
- domain-driven-design - 使用 Hexagonal Architecture 时添加专用端口有哪些缺点?
- android - TextView TextAllCaps 崩溃的应用程序