如何将NSString添加到NSMutableData?

时间:2017-05-22 06:08:29

标签: objective-c nsmutabledata

我无法弄清楚如何将NSString添加到NSMutableData结构

这就是我想要实现的,下面是硬编码并且有效,你可以看到数字字符串是我想用来自我的辅助函数的动态数据替换的。

NSMutableData *commands = [NSMutableData data];

[commands appendBytes:"\x1b\x62\x06\x02\x02\x20" "09258384394951\x1e\r\n" length:sizeof("\x1b\x62\x06\x02\x02\x20" "09258384394951\x1e\r\n") - 1];

我尝试构建一个完全模仿上述内容的NSString

NSString *trNo = [NSString stringWithFormat:@"\"\x1b\x62\x06\x02\x02\x20\" \"%@\x1e\r\n\"", [NWTillHelper getCurrentOrderNumber]];

但是这不能添加到NSMutableData构造中,我试过如下

[commands appendBytes:(__bridge const void * _Nonnull)(trNo) length:sizeof("\x1b\x62\x06\x02\x02\x20" "09258384394951\x1e\r\n") - 1];

如何创建一个appendBytes构造,以便我可以将NSString插入其中并使其成为动态的?

----进一步澄清-----

我正在使用NSData结构发送到打印机

例如,以下是剪切标签的代码

 // Cut the paper
    [commands appendBytes:"\x1b\x64\x02" length:sizeof("\x1b\x64\x02") - 1];

这是使文本对齐中心的命令

// Alignment (Center)
    [commands appendBytes:"\x1b\x1d\x61\x01" length:sizeof("\x1b\x1d\x61\x01") - 1];

正如您所看到的,它们是普通的Hex命令,它们可以正常工作

我遇到的问题是打印条形码的命令包含所有HEX代码中间的动态字符串,我无法弄清楚如何将NSString放入此HEX代码的中间。

这是打印条形码的命令,条形码中包含数字09258384394951,您可以在下面看到硬编码。这段代码工作正常,打印机正确打印条形码,但问题是我无法对数字/字符进行硬编码09258384394951我需要将其作为某种变量,这就是我被卡住的地方。

[commands appendBytes:"\x1b\x62\x06\x02\x02\x20" "09258384394951\x1e\r\n" length:sizeof("\x1b\x62\x06\x02\x02\x20" "09258384394951\x1e\r\n") - 1];

3 个答案:

答案 0 :(得分:1)

分三步添加数据:

NSMutableData *commands = [NSMutableData data];
NSData *orderNumber = [@"09258384394951" dataUsingEncoding:NSUTF8StringEncoding];  // example of order number converted to NSData
[commands appendBytes:"\x1b\x62\x06\x02\x02\x20" "" length:sizeof("\x1b\x62\x06\x02\x02\x20" "") - 1];  
[commands appendData:orderNumber];  
[commands appendBytes:"\x1e\r\n" length:sizeof("\x1e\r\n") - 1];    

答案 1 :(得分:0)

您可以从NSData获取NSString

NSData *dataString = [yourString dataUsingEncoding: NSUTF8StringEncoding];

使用适合您情况的编码。将获得的数据附加到现有NSMutableData

NSMutableData *commands = [data mutableCopy];

答案 2 :(得分:-1)

试试这个:

[commands appendData:[trNo dataUsingEncoding:NSUTF8StringEncoding]];