我有一个数字向量。vector<int> vec={16383 1 8192}. 我需要将它们转换为字节数组,以便 SPI 写入函数可以读取它并传输数据。但是,我无法使字节数组的向量起作用。我是 C++ 新手。
基本上,如果我的代码不清楚(可能是),我想从
std::vector <int> output={16383,1,8192};
至
std::vector <byte array> finalbuffer= {{0,63,255},{0,0,1},{0,32,0}};
所以我可以打电话finalbuffer[0],它会包含{0,63,255}.
我试过查找这个问题,但答案是浮动的,而不是我需要的。我尝试制作一个多维数组,但是我的初始向量大小并不总是相同的,并且取决于正在读入的数据。
std::vector <int> output={16383,1,8192};
//the basic code to convert from integer to byte array, I don't know how
// to convert the int vector to a byte array vector
uint8 tx_buffer1[3] = { 0,0,0 };
for (unsigned i = 0; i < output.size(); ++i) {
for (unsigned j = 0; j < 3; ++j) {
tx_buffer1[j] = (output[i] >> (2 - j) * 8) & 0xFF;
cout << unsigned(tx_buffer1[j]) << endl;
}
}
//The above works such that
int output=16383;
uint8 tx_buffer1[3] = { 0,0,0 };
for (unsigned j = 0; j < 3; ++j) {
tx_buffer1[j] = (output >> (2 - j) * 8) & 0xFF;
cout << unsigned(tx_buffer1[j]) << endl;
}
tx_buffer[0]=0
tx_buffer[1]=63
tx_buffer[2]=255
// But I need it for multiple integers from the vector.
以下适用于uint8 finalbuffer= {0-255,0-255,0-255}. handle,&transfercount并且options不重要。3 表示它读取字节,我需要它以便它将读取每个元素中带有字节数组的向量
std::vector <byte array> finalbuffer= {{0,63,255},{0,0,1},{0,32,0}};
//finalbuffer[0] would contain {0,63,255}
//finalbuffer[1] would contain {0,0,1}
//...
for {unsigned i=0; i<finalbuffer.size(); ++i) {
status = SPI_Write(handle, finalbuffer[i], 3, &transferCount, options);
if (status != FT_OK)
print_and_quit("Error while transmitting bytes.");
}
我无法让我的代码工作。不是字节数组向量的更好方法是什么?