2011-09-16 12 views
0

私のコードに問題があります。ここに私のコードがあります。目的コードの文字タイプ配列に問題があります

printerView *pvvc=[[printerView alloc] init]; 
    //[pvvc PrintImage:pvvc.printImageButton]; 
    //[pvvc getCheckSum]; 
    NSMutableArray *arrOrderVal=[pvvc getCheckSum]; 
    unsigned char buffer2[24]; 
    buffer2[0] = 0X55; buffer2[1]=0x66; buffer2[2]=0x77; buffer2[3]=0x88; buffer2[4]=0x44;//print command 
    buffer2[5] = 0X1D; buffer2[6]=0x6B; buffer2[7]=02; buffer2[8]=0x0D; 
    //<set order data 
    int arrStart=9; 
    for (int i=0; i<13; i++) { 
     NSString *val=[arrOrderVal objectAtIndex:i]; 
     buffer2[arrStart+i]=([val intValue]+30);//[NSString stringWithFormat:@"0x%d",([val intValue]+30)]; 
    } 
    //</set order data 

    /*buffer2[9] = 0X35; buffer2[10]=0x30; buffer2[11]=0x30; buffer2[12]=0x30; buffer2[13]=0x33; 
    buffer2[14] = 0X35; buffer2[15]=0x37; buffer2[16]=0x37; buffer2[17]=0x30; buffer2[18]=0x33; 
    buffer2[19] = 0X30; buffer2[20]=0x31; buffer2[21]=0x38; */ 

    buffer2[22]=0x37; buffer2[23]=0x30; 
    for (int i=0; i<24; i++) { 
     NSLog(@"%c",buffer2[i]); 
    } 

この配列の値を動的に追加する必要があります。値は私がコメントしたのと同じ形式です。

but this printing it empty values. as below. 
2011-09-16 11:58:37.610 SushiTeria[2024:700b] U 
2011-09-16 11:58:38.993 SushiTeria[2024:700b] f 
2011-09-16 11:58:39.534 SushiTeria[2024:700b] w 
2011-09-16 11:58:39.927 SushiTeria[2024:700b] à 
2011-09-16 11:58:40.321 SushiTeria[2024:700b] D 
2011-09-16 11:58:40.704 SushiTeria[2024:700b] 
2011-09-16 11:58:41.075 SushiTeria[2024:700b] k 
2011-09-16 11:58:41.459 SushiTeria[2024:700b] 
2011-09-16 11:58:41.863 SushiTeria[2024:700b] 
2011-09-16 11:58:42.279 SushiTeria[2024:700b] 
2011-09-16 11:58:42.695 SushiTeria[2024:700b] 
2011-09-16 11:58:43.044 SushiTeria[2024:700b] 
2011-09-16 11:58:43.438 SushiTeria[2024:700b] 
2011-09-16 11:58:43.844 SushiTeria[2024:700b] 
2011-09-16 11:58:45.351 SushiTeria[2024:700b] 
2011-09-16 11:58:45.756 SushiTeria[2024:700b] 
2011-09-16 11:58:46.229 SushiTeria[2024:700b] 
2011-09-16 11:58:46.622 SushiTeria[2024:700b] 
2011-09-16 11:58:47.039 SushiTeria[2024:700b] 
2011-09-16 11:58:48.039 SushiTeria[2024:700b] 
2011-09-16 11:58:48.782 SushiTeria[2024:700b] 
2011-09-16 11:58:49.299 SushiTeria[2024:700b] 
2011-09-16 11:58:49.862 SushiTeria[2024:700b] 7 
2011-09-16 11:58:50.616 SushiTeria[2024:700b] 0 

ありがとうございます。 Shivam

+1

たぶん、あなたは 'のNSLog(@ "%dを" 印刷し、それを変更する必要があり、バッファ2を[i]);代わりに、より多くの情報を提供します。 – tia

+1

コーディングスタイルに関するコメント: 'printerView'はクラス名なので、一般的なアプローチは' PrinterView'です。 –

答えて

0

の代わりに30を追加し、文字を印刷するには、小数点以下をプリントアウトすることができますか16進値。

NSLog(@"decimal: %d", buffer2[i]); 

または

NSLog(@"hex: %x", buffer2[i]); 

また、コンテキストを提供するために、文字自体をプリントアウトすることができます:

NSLog(@"hex + char: %x (%c)", buffer2[i], buffer2[i]); 
0

30(10進数)を追加していますが、16進数を出力しています。だから私はあなたが目に見えない文字の範囲にいると思う。 65歳で始まらない?

+0

印字可能な文字は32から始まり、表示可能な文字は33から始まります(スペースはよく、見えないので):-) –

0

あなたのarrOrderValに1桁の10進数の文字列が含まれていると仮定し、これらの文字に相当するasciiをバッファに挿入しようとすると、@Cocoaneticsはあなたの問題は小数点を追加していると言います。 ASCII文字チャートの「0」の開始位置はHex 30(Decimal 48)です。私はあなたが正しくあなたが変更する必要がやろうとしているものを理解していればそう:

buffer2[arrStart+i]=([val intValue]+30 

buffer2[arrStart+i]=([val intValue]+48 
関連する問題