【发布时间】:2019-03-01 21:03:41
【问题描述】:
我正在尝试计算 ASCII 十六进制值数组的校验和。
假设我有以下内容
char exArray[] = "3030422320303030373830434441453141542355";
这是 20 对十六进制值,每对代表一个 ASCII 字符(例如 0x41 = A)。 如何拆分它们以计算校验和?
另外,如何将数组中的两个值合并为一个值? (例如'4','1' -> '41')
【问题讨论】:
-
这似乎是一个非常糟糕的例子,因为其中没有
A-F十六进制值。它们会发生吗?你尝试了什么? -
第一步是将字符串表示形式(十六进制)转换为整数。
-
第二部分,试试
('4' - '0') * 16 + ('1' - '0') -
@mch 是的,他们可以。我尝试遍历数组并将两个字符保存到一个新对象中,但这样我最终还是得到了两个单独的字符。
-
你确定数组的类型是
uint16_t吗?它看起来像一个char数组。它会产生一个编译器错误。
标签: c arrays hex ascii checksum