我正在编写一个与串口通信的小程序。我使程序可以使用以下任一行正常运行;

unsigned char send_bytes[] = { 0x0B, 0x11, 0x00, 0x02, 0x00, 0x69, 0x85, 0xA6, 0x0e, 0x01, 0x02, 0x3, 0xf };

但是,要发送的字符串是可变的,因此我想执行以下操作;
char *blahstring;
blahstring = "0x0B, 0x11, 0x00, 0x02, 0x00, 0x69, 0x85, 0xA6, 0x0e, 0x01, 0x02, 0x3, 0xf"
unsigned char send_bytes[] = { blahstring };

它没有给我一个错误,但也没有用..有什么想法吗?

最佳答案

一个字节字符串是这样的:
char *blahString = "\x0B\x11\x00\x02\x00\x69\x85\xA6\x0E\x01\x02\x03\x0f"
另外,请记住,这不是常规字符串。如果您将其明确声明为具有特定大小的字符数组,这将是明智的:

像这样:

unsigned char blahString[13] = {"\x0B\x11\x00\x02\x00\x69\x85\xA6\x0E\x01\x02\x03\x0f"};
unsigned char sendBytes[13];
memcpy(sendBytes, blahString, 13); // and you've successfully copied 13 bytes from blahString to sendBytes

不是您定义的方式。

编辑:
要回答为什么第一个send_bytes有效而第二个不起作用,是这样的:
第一个创建一个由单个字节组成的数组。第二个as则创建一串ascii字符。因此,第一个send_bytes的长度为13个字节,而第二个send_bytes的长度要高得多,因为字节序列与第二个blahstring中各个字符的ascii等效。

关于c++ - C++从字符串发送字节?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14640264/

10-11 22:48
查看更多