-->

解码扫描的条形码值为int值(Decoding the scanned barcode value

2019-10-16 14:59发布

当我扫描条形码和我得到一些值,如果它等于= 2然后我需要==显示,并且如果它等于= 3然后我需要=并且如果该值是4,则无效显示量。

但扫描的条形码是整数值-当使用解码NSASCII它仅仅显示直到值127 ,它是显示无效的结果之后。 例如:如果我的条形码值= 9699的结果值= jem然后我的相加结果值= jem= actualstring值= ASC值id仅示出37

这里是我的代码:

- (void) readerView:(ZBarReaderView *)view didReadSymbols:(ZBarSymbolSet *)syms fromImage:(UIImage *)img
{
    // do something useful with results -- cool thing is that you get access to the image too
    for (ZBarSymbol *symbol in syms) {
        [resultsBox setText:symbol.data];
        if ([resultsBox.text length] == 2) {
            addedresult.text = [resultsBox.text stringByAppendingString:@"=="];
        } else if ([resultsBox.text length] == 3) {
           addedresult.text = [resultsBox.text stringByAppendingString:@"="];
        } if ([resultsBox.text length] >= 4) {
           addedresult.text = @"Invalid";
        }
        [Base64 initialize];
        NSString *myString = [[NSString alloc]initWithString:addedresult.text];
        NSData * data = [Base64 decode:myString];
        NSString * actualString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
        NSLog(@"%@",actualString);
        labeltext.text= actualString;
        int asc = [actualString characterAtIndex:0];
        label.text = [NSString stringWithFormat:@"%d", asc];
        [actualString release];
        break;
    }

}

Answer 1:

由于有人复活这个问题的意见,我会恢复这一整个帖子。

你不应该经历的NSData来创建你已经拥有的东西一个NSString,而你可能失去了前进的道路上的东西。 直接进入的NSString使用stringWithFormat。 此外,ASCII会回来,后来字节你,如果你有一个选择,使用UTF8。

NSString *actualStringUTF8 = [NSString stringWithFormat:@"%@",[addedresult.text urlEncodeUsingEncoding:NSUTF8StringEncoding]];
NSString *actualStringASCII = [NSString stringWithFormat:@"%@",[addedresult.text urlEncodeUsingEncoding:NSUTF8StringEncoding]];

NSLog(@"%@",actualStringUTF8);
NSLog(@"%c",[actualStringUTF8 UTF8String]); //This is a const char*

其次,我看着SDK和它说symbol.data已经是一个NSString *。 这取决于你想要什么,你可能不需要做任何事情。 如果你最终需要更改编码,确保你理解为什么你需要(一个很好的理由是“应用程序的其余部分使用NS **** StringEncoding”)。

另外,还要确保你比较字符串正确“的Objective-C”的方式:

[actualString isEqualToString: testString];

不actualString ==的TestString;



文章来源: Decoding the scanned barcode value to int value