C ++从字符串发送字节?

时间:2013-02-01 05:22:08

标签: c++ string

我正在编写一个与串口通信的小程序。我使用其中一行来使程序正常工作;

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 };

它不会给我一个错误,但它也不起作用..任何想法?

2 个答案:

答案 0 :(得分:7)

字节字符串是这样的:

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有效,第二个不是这个: 第一个,创建一个单独的字节数组。其中,第二个,创建一串ascii characteres。因此,第一个send_bytes的长度为13个字节,其中第二个send_bytes的长度要高得多,因为字节序列与第二个blahstring中的单个字符的ascii等价。

答案 1 :(得分:0)

blahstring是一串字符。

第1个字符为0,第2个字符为x,第3个字符为0,第4个字符为B等。所以该行

unsigned char send_bytes[] = { blahstring };

是一个数组(假设你预先形成一个演员!)将有一个项目。

但是有效的例子是一个数组,第一个字符的值为0x0B,第二个字符的值为0x11。