Perl - 2 的补码模 256 - C++相等的

发布于 2024-12-19 13:37:23 字数 286 浏览 0 评论 0原文

我正在使用 Perl 脚本将值从 USB 发送到 Arduino。该脚本的一部分是对协议中的值进行校验和错误检查。

我现在想将数据从一个 Arduino 发送到另一个,因此我需要用 C++ 编写等效的行。

$checksum = ((($val1 + $val2 + $val3 + $val4 + $val5)^255 )+1) & 255;

它是 1 到 5 的值之和模 256 的 2 的补码。

我如何用 C++ 为 Arduino 编写这个?

I'm working with a Perl script to send values from USB to Arduino. Part of the script is a checksum-to-error check of the values in the protocol.

I would now like to send the data from one Arduino to another, so I need to write the equivalent line in C++.

$checksum = ((($val1 + $val2 + $val3 + $val4 + $val5)^255 )+1) & 255;

It is the 2's complement of the sum of the values 1 to 5 modulo 256.

How could I write this in C++ for Arduino?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

初心未许 2024-12-26 13:37:23

摆脱美元:

checksum = (((val1 + val2 + val3 + val4 + val5)^255 )+1) & 255;

Just get rid of the dollars:

checksum = (((val1 + val2 + val3 + val4 + val5)^255 )+1) & 255;
旧故 2024-12-26 13:37:23

在 C++ 中它几乎是一样的:

checksum = (((val1 + val2 + val3 + val4 + val5) ^ 255) + 1) & 255;

尽管你可以更简单地表达为:

checksum = -(val1 + val2 + val3 + val4 + val5) & 255;

It would be pretty much the same in C++:

checksum = (((val1 + val2 + val3 + val4 + val5) ^ 255) + 1) & 255;

although you could express this more simply as:

checksum = -(val1 + val2 + val3 + val4 + val5) & 255;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文