gpt4 book ai didi

c - 带位字段的 QR 编码

转载 作者:行者123 更新时间:2023-11-30 16:24:03 24 4
gpt4 key购买 nike

我正在尝试用 C 语言进行练习,其范围是通过 Byte 方法将消息编码为 2Q QR 码。这意味着给定的字符串应该在消息中编码为:

  • 4 位模式指示符(在我的例子中为 0100);
  • 消息长度为 8 位;
  • 消息本身(20 个字符);
  • 4 个空位作为消息结束信号;
  • 16 位用于 0xEC11 填充。

我尝试使用具有位字段的结构,如以下代码所示,但没有成功,因为无法强制位顺序。

typedef struct
{
unsigned char mode : 4;
unsigned int length : 8;
unsigned char *message;
unsigned char eof : 4;
unsigned int padding : 16;
} code;

我还尝试左移编码消息的位,但我再次收到错误消息“int value Expected”,这意味着(如果我理解正确的话)我无法移动结构。

有人可以建议一种执行此任务的优雅方法吗?

最佳答案

我最终使用 uint8_t 中的数据和位移位来实现它。这意味着我将字符串保存在数组中,然后将其移动,如下所示:

for(int n_digit = 0; n_digit <= length; n_digit++)
{
if(n_digit < length)
{
*(code + n_digit) = (*(code + n_digit) << 4) + (*(code + n_digit + 1) >> 4);
}
else if (n_digit == length)
{
*(code + n_digit) = *(code + n_digit) << 4;
}
}

也许不是最高质量的代码,但它工作得很好。

关于c - 带位字段的 QR 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53724141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com