快速字节校验和

2023-12-14

我有一个非常棘手的问题。我使用 iOS 设备将字节数组发送到 ble 设备(led 灯),效果很好。 我有一个所有命令的文档,但中文翻译得很差。 整个字节包的构建如下:

  • 命令前面(1字节)
  • 命令包长度(1字节)
  • 命令的ID(1字节)
  • 命令的控制部分(1字节)
  • 数据字段(15字节)
  • 检查(1字节)

例如,用于打开灯的完整包是“A1080100FFFFFF59”到目前为止,一切对我来说都很清楚。我唯一纠结的是最后一个字节或它在文档中的调用方式:"Check"。 该文件只是说:“校验码说明:校验码=(0 - 期望整个字节中的字节之和)”。 在上面的例子中"59"将是校验和。但无论我如何尝试计算,我都无法计算出"59".

我找到了好心的小帮手

public extension Data {
    public func checkSum() -> Int {
        return self.map { Int($0) }.reduce(0, +) & 0xff
    } 
}

但我没有得到权利"checks"对于任何命令。

也许有人知道这是如何计算的?


256 - [your checksum algorithm]回报0x59,所以也许就是这样:

var data = Data([0xA1, 0x08, 0x01, 0x00, 0xFF, 0xFF, 0xFF])

extension Data {
    var checksum: Int {
        return self.map { Int($0) }.reduce(0, +) & 0xff
    }
}

let result = 256 - data.checksum
"0x\(String(result, radix: 16))" // "0x59"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速字节校验和 的相关文章

  • 如何将渐变应用于 iOS Swift 应用程序的背景视图

    我正在尝试应用渐变作为视图 故事板的主视图 的背景颜色 代码运行 但没有任何变化 我正在使用 xCode Beta 2 和 Swift 这是代码 class Colors let colorTop UIColor red 192 0 255
  • 如何从 GCD (DispatchQueue) 转换为 Swift async/await?

    我正在关注斯坦福大学的 CS193p 开发 iOS 应用程序在线课程 它使用 Grand Central Dispatch GCD API 来演示多线程 但他们指出 自 WWDC 2021 起 GCD 已大部分被 Swift 新的内置异步
  • Swift - 本地通知不会被触发

    我正在 Swift 3 中编码 我只是想发送通知now没有任何延迟或间隔 然而 通知永远不会被触发 这是我的代码 视图控制器代码 import UserNotifications class HomeViewController UIVie
  • 检查 bash 中是否存在关联数组元素

    在 bash 脚本中 我在变量中有一个区域设置 如下所示 locale fr ma 我也有一个像这样的关联数组 declare A new loc map new loc fr ma en ma new loc el gr en gr ne
  • CLLocation Manager如何在一定距离后更新

    我正在使用 CLLocationManager didupdatelocations 如下所示 func locationManager manager CLLocationManager didUpdateLocations locati
  • tableView.dequeueReusableCellWithIdentifier() 导致应用程序挂起

    原帖 我们最近将我们的应用程序转换为 Swift 2 0 和 iOS9 我看到的一个奇怪的问题是调用 tableView dequeueReusableCellWithIdentifier 会导致应用程序挂在模拟器中 The code fu
  • Java中char数组的默认值是多少?

    如果我像这样分配字符数组 char buffer new char 26 它分配的默认值是什么 我尝试打印它 但它只是一个空字符 System out println this is what is inside gt buffer 1 t
  • 由 Xcode 机器人运行时,在文本视图中键入文本时 UI 测试失败

    我有以下 XCTest UI 测试 将文本键入文本视图 let textView app textViews elementBoundByIndex 0 textView tap textView typeText Hello world
  • 将 UUID 存储为 base64 字符串

    我一直在尝试使用 UUID 作为数据库键 我希望占用尽可能少的字节数 同时仍然保持 UUID 表示形式的可读性 我认为我已经使用 base64 将其减少到 22 个字节 并删除了一些尾随的 这些 对于我的目的来说似乎没有必要存储 这种方法有
  • UIButton 导致无法识别的选择器发送到实例

    我正在尝试使用 for 循环创建多个按钮 但在使用 sender 函数时遇到问题 我有以下代码 func setUpButtons for i in 1 3 let btn UIButton UIButton frame CGRect x
  • 在哪里可以找到 Java 数组的源代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在哪里可以找到java数组的源代码 Example double arr new double 20
  • 如何在 SwiftUI 中仅使用 ForEach 而不是列表来滑动删除

    我正在 SwiftUI 中使用 ForEach 制作自定义列表 我的目标是进行滑动删除手势 而不是将 ForEach 嵌入到列表中 到目前为止 这是我的代码 import SwiftUI struct ContentView View le
  • 如何计算伽罗瓦域上的numpy数组?

    我想在伽罗华域 GF4 上使用 numpy 数组 所以 我将 GF4 类设置为数组元素 它适用于数组 整数计算 但不适用于数组 数组计算 import numpy class GF4 object class for galois fiel
  • 在没有预览窗口的情况下使用 AVCaptureVideoDataOutputSampleBufferDelegate

    我正在开发一个基于 Swift 的 macOS 应用程序 我需要捕获视频输入 但不将其显示在屏幕上 而不是显示视频 我想将缓冲的数据发送到其他地方进行处理 并最终显示它在 a 中的一个物体上SceneKit scene 我有一个Camera
  • 在 Swift 中从 UIScrollView 创建 PDF 文件

    我想从 UIScrollView 的内容创建一个 PDF 文件 func createPdfFromView aView UIView saveToDocumentsWithFileName fileName String let pdfD
  • 总和不小于 key 的数组的最小子集

    给定一个数组 假设为非负整数 我们需要找到最小长度子集 使得元素之和不小于 K K 是作为输入提供的另一个整数 是否有可能找到时间复杂度为 O n n 的大 oh 的解决方案 我目前的想法是这样的 我们可以在 O n log n 中对数组进
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • 作为!与 Swift 中 Xcode 6.3 中的 as 运算符对比

    Xcode 6 3 使 Swift 发生了很大变化 我必须更换每个应用程序中的数十个位置as gt as 为什么 现在有什么规则 在 Swift 1 2 之前 as运算符可用于执行两种不同类型的转换 具体取决于要转换的表达式的类型及其要转换
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • Fortran 子例程返回错误值

    嘿 我正在开发一个 Fortran 程序 遇到了一个奇怪的问题 当我尝试在调用特定子例程之前直接输出数组的某些值时 我得到了正确的值 然后 我尝试在启动子例程时输出同一数组的一些值 它们都是 0 我最终在子例程之后输出数组的值 并且这些值回

随机推荐

  • 添加新行时,Google 表格条件格式会发生变化

    因此 我单击 A 和 1 之间的单元格来选择整个工作表 然后单击 格式 然后单击 条件格式 并设置规则 基本上 我有大约 15 种不同的条件 但所有条件都在 F 到 O 列中 所以我使用 F O 例如 如果文本恰好是 是 则将背景更改为绿色
  • 如果水平进度条位于工具栏上方,则不可见(适用于 Android 5)

    我尝试通过以下 XML 将水平进度条放置在工具栏顶部 my activity xml
  • hadoop getmerge到另一台机器

    是否可以存储输出hadoop dfs getmerge命令到另一台机器 原因是我的本地机器没有足够的空间 作业输出为 100GB 我的本地存储为 60GB 另一个可能的原因可能是我想在另一台机器上本地处理另一个程序中的输出 并且我不想将其传
  • R data.table 使用标准名称创建新列

    我想根据比率计算为我的 data table 创建新列 我的变量的名称有点标准 所以我认为必须有一种方法可以轻松实现这一点数据表 但是我不知道如何实现这一点 以下是我的示例数据和代码 set seed 1200 ID lt seq 1001
  • 复数 FFT 然后逆 FFT MATLAB

    我正在使用 Matlab 中的 FFT 函数来尝试分析行波激光模型的输出 模型的时域形式为 实数 虚数 其思想是将 FFT 应用于复数输出 以获得频域中的相位和幅度信息 load time domain field data data lo
  • 为什么我不能使用 boost::variant 访问这个自定义类型?

    下面的代码 include
  • 如何通过 Gmail 使用简单的 SMTP 命令发送电子邮件?

    出于教育目的 我需要使用 SMTP 的基本且简单的规则通过 SMTP 服务器发送电子邮件 我能够使用smtp4dev I telnet localhost 25和 命令是 我想做同样的事情 使用 Gmail SMTP 服务器 但是 它需要身
  • 如何按两个值对这个元组列表进行排序?

    我有一个元组列表 2 Operation SUBSTITUTED 1 Operation DELETED 2 Operation INSERTED 我想用两种方式对此列表进行排序 首先按升序排列第一个值 即1 2 3 etc其次是按相反字母
  • 如何处理 Start-Job 中运行命令的错误?

    我正在编写一个自动化脚本 我有一个函数 它接受命令或可执行文件 我必须等到命令或可执行文件完成运行并在失败或通过时返回 我还想将输出写入文件 我正在尝试与Start Job cmdlet 我当前的代码 job Start Job scrip
  • 与对象更改通知相比,Google Club Pub/Sub 的可扩展性如何

    正如标题所问 当使用签名 URL 上传对象时 与 Google Cloud Storage 中的对象更改通知相比 Google Club Pub Sub 的可扩展性如何 在能够处理短时间内上传的许多对象方面 每种方法的比较如何 如果上传的对
  • 如何将 Robomongo 连接到 MongoDB

    我的运行系统中有 MongoDB 和 Robomongo 并且我使用 Robomongo 作为客户端 我已经在另一个系统上安装了 MongoDB 我将其视为服务器 并且我想将我的系统 作为客户端 的 Robomongo 连接到另一个系统 服
  • 将值添加到选定的多选

    我想知道是否可以动态添加新值选择 js多重选择 类似于标记的工作方式 我在另一个看到过SO post用户说这是可能的 他链接到一个example and a fork在 github 上 但我在实现这些方面遇到了一些困难 源代码是用 Cof
  • 使用开源库时,我们应该针对源代码还是二进制文件进行编译? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 在项目中使用开源库 例如 SharpPcap 或 FakeItEasy 时 我们应该将源代码添加到解决方案中还是针对 DLL 进行编译并将它们放在解决方案中的目录中 您应该使用二进制文件进
  • 检查应用程序是否在前台或后台运行(使用同步适配器)

    我知道这是一个重复的问题 但我查遍了所有地方 找不到适合我的解决方案 所以 我有一个从 TMDB API 获取电影数据的应用程序 它使用同步适配器按页获取它 基本上它运行得很好 除非在应用程序打开且用户不在第一页时运行同步适配器的定期同步
  • MySQL 服务器在 Perl 爬行期间消失了

    我使用 WWW Mechanize 库来获取 URL 的内容并将其数据保存到 mysql 表中 但是当页面内容太大时 会出现以下错误消息 DBD mysql st 执行失败 MySQL 服务器已消失 F crawling perl test
  • 正则表达式删除字符串中的最后一个单词+附加字符

    我从服务器获取一个字符串 我必须使用正则表达式来解析它 我知道如何使用字符串函数 String split 等 来做到这一点 但不知道如何使用正则表达式 这是家庭作业要求中的 字符串看起来像这样 12345
  • 为什么该决策树每一步的值之和不等于样本数?

    我正在阅读有关决策树和装袋分类器的内容 并且我试图展示装袋分类器中使用的第一个决策树 我对输出感到困惑 from sklearn model selection import train test split from sklearn da
  • 为什么我收到 You do not have permission to call SpreadsheetApp.openById?

    我们有两张 AL 表 本地的和国家的 我正在尝试获取它 以便当我们当地的 AL 日历 完成时 数据会复制到国家日历中 检查编辑的单元格是否位于国家电子表格中某人的行中 然后将其复制到国家电子表格上的相应行中 我不断得到 您无权调用 Spre
  • 如何在 Android 中制作自定义键盘? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想做一个定制键盘 我不知道如何使用 XML 和 Java 来做到这一点 下图是我想做的键盘模型 它只需要数字 系统键盘 此答案告诉您如何制作可在用户安装在手机上的任何应用程序中
  • 快速字节校验和

    我有一个非常棘手的问题 我使用 iOS 设备将字节数组发送到 ble 设备 led 灯 效果很好 我有一个所有命令的文档 但中文翻译得很差 整个字节包的构建如下 命令前面 1字节 命令包长度 1字节 命令的ID 1字节 命令的控制部分 1字