【问题标题】:c++ replacing order of items in byte arrayc ++替换字节数组中的项目顺序
【发布时间】:2019-03-15 05:58:59
【问题描述】:

我正在为 Arduino C++ 编写代码。

我有一个包含十六进制字节值的字节数组,例如:

20 32 36 20 E0 EC 20 F9 F0 E9 E9 E3 F8 5C 70 5C 70 5C 73 20 E3 E2 EC 20 F8 E0 E5 E1 EF 20 39 31 5C

这些字节中有四个 ASCII 数字:

HEX 0x32 是 ascii 码中的数字 2

HEX 0x35 是 ASCII 码中的数字 5

HEX 0x39 是 ascii 码中的数字 9

等等……

https://www.ascii-codes.com/cp862.html

所以十六进制值 32、36 代表数字 26,而 39、31 代表 91。

我想找到这些数字并反转每个组,以便(在此示例中)表示 62 和 19 而不是 26 和 91。

因此,输出必须如下所示:

20 36 32 20 E0 EC 20 F9 F0 E9 E9 E3 F8 5C 70 5C 70 5C 73 20 E3 E2 EC 20 F8 E0 E5 E1 EF 20 31 39 5C

数字不必是两位数,但可以是 0-1000 之间的任何数字

我还知道,每组此类数字前面都有十六进制值 20,如果有帮助的话。

我在 C# 中完成了这项工作(在 Stack Overflow 用户的帮助下 :-)):

string result = Regex.Replace(HexMessage1,
                           @"(?<=20\-)3[0-9](\-3[0-9])*(?=\-20)",
                           match => string.Join("-", Transform(match.Value.Split('-'))));

 private static IEnumerable<string> Transform(string[] items)
        {
            // Either terse Linq:
            // return items.Reverse();

            // Or good old for loop:
            string[] result = new string[items.Length];

            for (int i = 0; i < items.Length; ++i)
                result[i] = items[items.Length - i - 1];

            return result;
        }

有人可以帮我让它在 C++ 上运行吗?

【问题讨论】:

  • "32,36 女巫是 26" 你的意思是你想用 3Y 3X 替换 3X 3Y (当 X,Y 是数字时)? 31 32 33 怎么样?
  • 目前还非常不清楚“我里面有 4 位数字(数字)”是什么意思。我看到以下数字:26 32 36 20 20 70 70 73 20 20 29 39 31。您的 C# 正则表达式表明您只对以 3 开头的数字感兴趣。如果是这种情况,请在问题中说出来。
  • 我需要找到所有数字。并替换它们 28--82 , 1234--4321 1957-7591 ,十六进制数字表示为 30-39
  • 您的意思是 digits 表示为 30-39?请不要混淆“数字”和“数字”,真的很混乱。
  • 顺便说一句,“字节数组”似乎并不是真正的字节数组(在某种意义上它包含0x200x31 等),而是一个空格-delimited string,其中每个“字节”是代表十六进制值的两位数字字符?这也让它变得非常不同。

标签: c++ arrays replace find


【解决方案1】:

逐个元素循环遍历数组,查找0x320x39。如果找到,检查下一个字节(如果在界限内),看它是否匹配0x360x31(分别)。如果是,则交换当前字节和下一个字节。继续循环,跳过当前的下一个字节。

【讨论】:

  • 我不认为你明白我想做什么......我不知道数组中的数字是多少。不只是 32 或 39……它可以是任何数字,也可以是 3-4 位数字
  • @David12123 然后请编辑您的问题以改进它。我建议您花一些时间来read about how to ask good questionsthis question checklist。当然,请学习如何创建Minimal, Complete, and Verifiable Example 来向我们展示您的尝试(并包括某些指定输入的预期和实际输出)。
  • 这是我在帖子中写的——还提到了“示例”,并给出了我现在拥有的和需要拥有的。请阅读我的帖子,看看。告诉我不明白的地方-(我在帖子中没有看到问题)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多