Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何正确编码数字QR码?_C_Encoding_Qr Code - Fatal编程技术网

C 如何正确编码数字QR码?

C 如何正确编码数字QR码?,c,encoding,qr-code,C,Encoding,Qr Code,我正在使用。 我想要一个带有版本1(21x21)和ECC级别H的二维码。据我所知,我可以有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_N

我正在使用。
我想要一个带有版本1(21x21)和ECC级别H的二维码。据我所知,我可以有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");
}
QRcode*结果;
QRinput*input=QRinput\U new2(1,QR\U ECLEVEL\U H);
无符号字符*数据=新的无符号字符[17];
对于(int i=0;i<17;i++){
数据[i]=0;
}
QRinput_append(输入,QR_模式_编号,17,数据);
结果=QRcode\U编码输入(输入);
int-idx=0;
printf(“%d\n”,结果->宽度);
对于(int i=0;iwidth;i++){
对于(int j=0;jwidth;j++){
如果(结果->数据[idx]&1){
printf(“%d”,1);
}否则{
printf(“%d”,0);
}
idx++;
}
printf(“\n”);
}
但无论我的数据是什么,我的程序都会返回相同的输出。

我在这里遗漏了什么?

我向github提交了一个问题,并很快得到了答案
这里的问题是我的数据初始化:

unsigned char *data = new unsigned char[17];
for(int i = 0; i < 17; i++) {
    data[i] = 0;
}
unsigned char*data=新的unsigned char[17];
对于(int i=0;i<17;i++){
数据[i]=0;
}
应该是:

unsigned char *data = new unsigned char[17];
for(int i = 0; i < 17; i++) {
    data[i] = '0'; //here
}
unsigned char*data=新的unsigned char[17];
对于(int i=0;i<17;i++){
数据[i]=“0”;//此处
}