首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标c中字符类型数组中的问题

目标c中字符类型数组中的问题
EN

Stack Overflow用户
提问于 2011-09-16 14:33:38
回答 3查看 186关注 0票数 0

我的代码中有一个问题,请帮助我。这是我的代码。

代码语言:javascript
复制
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]);
    }

我想为这个数组动态添加值。值的格式与我之前注释的格式相同。

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-25 03:16:51

您可能希望打印出十进制值或十六进制值,而不是添加30,然后打印出字符。

代码语言:javascript
复制
NSLog(@"decimal: %d", buffer2[i]);

代码语言:javascript
复制
NSLog(@"hex: %x", buffer2[i]);

您还可以打印出字符本身以提供上下文:

代码语言:javascript
复制
NSLog(@"hex + char: %x (%c)", buffer2[i], buffer2[i]);
票数 0
EN

Stack Overflow用户

发布于 2011-09-25 02:40:51

您正在添加30 (十进制),但您正在输出十六进制。所以我认为你是在看不见的人物的范围内。不是从65岁开始吗?

票数 0
EN

Stack Overflow用户

发布于 2011-09-25 03:04:09

假设您的arrOrderVal包含一个由一位十进制数字组成的字符串,并且您正在尝试将这些字符的ascii等价物插入到您的缓冲区中,那么正如@Cocoanetics所说的那样,您的问题在于您添加了一个十进制30。ASCII字符表中'0‘的开头是十六进制30 (十进制48)。因此,如果我理解您尝试做的事情是正确的,那么您应该改变:

代码语言:javascript
复制
buffer2[arrStart+i]=([val intValue]+30

代码语言:javascript
复制
buffer2[arrStart+i]=([val intValue]+48
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7440983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档