如何正确编码数字QRCode?

时间:2013-09-23 03:07:26

标签: c encoding qr-code

我正在使用libqrencode 我想要一个带有版本1 (21x21)和 ECC Level H 的QR码。根据{{​​3}}我可以有17个数字。所以我这样做:

QRcode *result;
QRinput *input = QRinput_new2(1, QR_ECLEVEL_H);
unsigned char *data = new unsigned char[17];
for(int i = 0; i < 17; i++) {
    data[i] = 0;
}

QRinput_append(input, QR_MODE_NUM, 17, data);

result = QRcode_encodeInput(input);

int idx = 0;
printf("%d\n", result->width);
for(int i = 0; i < result->width; i++) {
    for(int j = 0; j < result->width; j++) {
        if(result->data[idx] & 1) {
            printf("%d", 1);
        } else {
            printf("%d", 0);
        }
        idx++;
    }
    printf("\n");
}

但是我的数据是,我的程序返回相同的输出 我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我在那里为github提交了一个问题并很快得到答案https://github.com/fukuchi/libqrencode/issues/33#issuecomment-24997167
问题是我的数据初始化:

unsigned char *data = new unsigned char[17];
for(int i = 0; i < 17; i++) {
    data[i] = 0;
}

应该是:

unsigned char *data = new unsigned char[17];
for(int i = 0; i < 17; i++) {
    data[i] = '0'; //here
}