我正在使用Apache Thrift RPC(编译为C ++)机制与Apache Flume进行通信。我必须使用此平台提供的特定API
我想发送二进制数据,但RPC函数只接受std :: string作为参数。因此,我只能发送第一次出现0x00之前的二进制数据。
u_char bin[10] = {'a','b',1,'d','e',0,'2','3','4','5'};
// Takes only the first 5 bytes, and sets a length of 5
string art_test((const char *)bin);
我搜索了源代码,我调用的函数将str.data()转换为(uint8_t *)并发送长度为str.size()的数据。
uint32_t ssize = static_cast<uint32_t>(str.size());
trans_->write((uint8_t*)str.data(), ssize);
有没有办法创建'二进制字符串',uint8_t作为数据并具有指定的长度?甚至可能使用所需的二进制数据创建我自己的字符串的内存表示。