1

我正在使用libqrencode
我想要一个版本 1 (21x21) 和ECC H 级的 QR 码。根据http://www.qrcode.com/en/about/version.html我可以有 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");
}

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

4

1 回答 1

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
}
于 2013-09-24T13:01:14.147 回答