开发者

issue in character type array in objective c

开发者_Go百科I have an issue in my code please help me. Here is the code of mine.

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]);
    }

I want to add values for this array dynamically. values are in same format as I have commented.

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

Thanks in advance. Shivam


Instead of adding 30 and then printing out the character, you may want to print out the decimal or hexadecimal value.

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

or

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

You could also print out the character itself to provide context:

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


You are adding 30 (decimal) but you are outputting hex. So I think you are in the range of invisible characters. Doesn't a start at 65?


Assuming that your arrOrderVal contains a string of single digit decimal numbers, and you are trying to insert the ascii equivalent of those characters into your buffer, then as @Cocoanetics says your problem is that you are adding a decimal 30. The start of '0' on the ASCII character chart is at Hex 30 (Decimal 48). So if I understand what you are trying to do correctly you should change:

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

to

buffer2[arrStart+i]=([val intValue]+48
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜