Objective c OBJ-C中的动态逃逸序列

Objective c OBJ-C中的动态逃逸序列,objective-c,encoding,nsstring,hex,Objective C,Encoding,Nsstring,Hex,我正在尝试获取一个类似\x8的字符串,并将字节附加到数据中。不幸的是,每当我使用@“\\x8,OBJ-C都无法识别它是一个十六进制代码。 我可以使用哪种编码或如何编码,以便使用动态转义序列 样本: - (void)selectStandardPrinterMode:(int)font isEmphasized:(BOOL)emphasized isDoubleSize:(BOOL)size isUnderline:(BOOL)line { NSMutableString *printer

我正在尝试获取一个类似
\x8
的字符串,并将字节附加到
数据中。不幸的是,每当我使用
@“\\x8
,OBJ-C都无法识别它是一个十六进制代码。 我可以使用哪种编码或如何编码,以便使用动态转义序列

样本:

- (void)selectStandardPrinterMode:(int)font isEmphasized:(BOOL)emphasized isDoubleSize:(BOOL)size isUnderline:(BOOL)line
{
    NSMutableString *printerMode;
    unsigned int hex;
    switch (font)
    {
        case 0:
            hex = 0;
            break;
        case 1:
            hex = 1;
            break;
        default:
            hex = 0;
            NSLog(@"[font]: unknown option");
            break;
    }

    if (emphasized)
    {
        hex += 8;
    }

    if (size)
    {
        hex += 30;
    }

    if (line)
    {
        hex += 80;
    }

    if (hex > 100)
    {
        hex -= 100;
        printerMode = [NSString stringWithFormat:@"%@%u", @"\xb", hex];
    }
    else
    {
        printerMode = [NSString stringWithFormat:@"%@%u", @"\\x", hex];
    }
    // not working
    [_data appendBytes:ESC "!" length:2];
    [_data appendBytes:[printerMode cStringUsingEncoding:NSASCIIStringEncoding] length:1];

    // working example
    [_data appendBytes:ESC "!" "\x8" length:3];
}

既然你已经有了一个号码,为什么不这样使用呢:

hex
的数据类型更改为
uint8\u t
。然后可以通过执行以下操作来追加字节:

[_data appendBytes:&hex length:1];

在追加字节之前,先追加ESC和

好的……答案比我想象的要简单得多。我一直在尝试各种编码方式……谢谢!