0

我正在尝试将十六进制命令发送到蓝牙打印机。其中一个字符决定了我可以传递的数据的大小。字符串是:

@"\x1d\x28\x6b\xff\x00\x31\x50\x30\x66\x61\x72\x74\x20\x70\x6f\x6f\x70\x79\x20\x66\x61\x72\x74\x20 \x70\x6f\x6f\x70\x79\x20\x66\x61\x72\x74\x20\x70\x6f\x6f\x70\x79\x20\x66\x61\x72\x74\x20\x70\x6f\x6f \x70\x79\x20\x66\x61\x72\x74\x20\x70\x6f\x6f\x70\x79\x20\x66\x61\x72\x74\x20\x70\x6f\x6f\x70\x79\x20 \x66\x61\x72\x74\x20\x70\x6f\x6f\x70\x79\x20\x66\x61\x72\x74\x20\x70\x6f\x6f\x70\x79\x20\x66\x61\x72 \x74\x20\x70\x6f\x6f\x70\x79\x20\x66\x61\x72\x74\x20\x70\x6f\x6f\x70\x79\x20\x66\x61\x72\x74\x20\x70 \x6f\x6f\x70\x79\x2e\x2e\x2e\x2e"

当我这样做时,我得到标题中的错误。原因是我传递了 ff (第一行 - 16 个字符),它在 UTF-8 的代码集之外。如果我将其设置为代码集中的 7f,则一切正常。

我尝试了几种不同的方法,但无法解决此问题。

4

1 回答 1

2

将您的代码更改为以下内容:

uint8_t bytes[] = { 0x1d, 0x28, 0x6b, 0xff, 0x00, 0x31, 0x50, 0x30, 0x66, ... };
NSData *data = [[NSData alloc] initWithBytes:bytes length:sizeof(bytes)];

现在您可以使用NSData发送十六进制命令。

于 2013-03-07T02:33:38.657 回答