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
精彩评论