我正在使用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");
}
但是我的数据是,我的程序返回相同的输出 我在这里缺少什么?
答案 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
}