将 int 数组值传输到无符号向量
Transferring Int Array Values to Unsigned Vector
我有一些数据以 32 位字的形式出现,代表 32 个通道,要么发射,要么不发射。然后,我想获取这些数据并将通道单独添加为 int,以便我可以找出该通道触发的多次。
例如,对于 4 个通道:
001001001000
会变成:
002001
到目前为止,我不断收到这种类型的错误:
error: no match for ‘operator=’ in ‘*(((std::vector<unsigned int, std::allocator<unsigned int> >*)(((long unsigned int)i) * 24ul)) + dat) = data2[i]’
关于如何帮助我的任何想法?谢谢=)
void binary(int convert,vector <unsigned>* dat) {
bitset<32> bits(convert);
//cout << bits.to_string() << endl;
//cout << bits.to_ulong() << endl;
char data[32];
int data2[32];
for(unsigned i = 0; i < 32; ++i) {
data[i] = bits[i];
data2[i] = data[i];
dat[i] = data2[i]; ///ERROR WAS HERE
}
for(unsigned i = 32; i; --i) {
int j;
cout << (data2[i-1]);
}
cout << endl;
}
void SerDi() {
vector <unsigned> dat(32);
cout << " Reading data from memory..." << endl;
ValVector< uint32_t> data=hw.getNode("SerDi.RAM").readBlock(8);
hw.dispatch();
cout << data[0]<<endl;
cout << data[1]<<endl;
for (unsigned i = 2; i < 7; i++) {
binary(data[i], &dat);
}
//graph(dat);
}
我猜这是包含问题的行:
dat[i] = data2[i];
这是因为dat
是一个指针,所以dat[i]
将dat
索引为普通数组而不是矢量对象。要解决它,请不要将其作为指针传递,而是通过引用传递:
void binary(int convert,vector <unsigned>& dat) { ... }
并在没有地址运算符的情况下调用它:
binary(data[i], dat);
或者保持代码原样,但更改有问题的行以取消引用指针:
(*dat)[i] = data2[i];
相关文章:
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 将无符号字符的向量存储在数组中会给我 std::bad_alloc
- 尝试将字符串从文件读取到无符号字符向量中
- 使用192/256位整数求和无符号64位整数向量的点积的最快方法
- 如何使用istream_iterator将无符号字符向量转换为字符串?
- 快速将无符号字符的向量强制转换为POD结构的向量,反之亦然
- 将无符号字符的向量写入二进制文件 c++
- C++将向量转换为<string>无符号字符数组
- SSE2 内部函数 - 找到两个无符号短向量的最大值
- 您可以将向量<无符号字符>转换为字节[]吗?
- C++ 强制转换向量<无符号字符>到无符号字符 *
- 无符号字符迭代器的向量不起作用
- 将字符串存储在无符号长整型的向量中
- 从int c++的向量返回一个无符号长
- 将 int 数组值传输到无符号向量
- 从向量数组中获取无符号 int
- 有没有一种方法可以将无符号字符块移动到 STL 向量中,而不是一次移动 1 个无符号字符
- C++:将无符号长整整转换为向量<char>,反之亦然
- 我可以将向量的第一个元素的地址直接传递给一个函数吗?该函数需要一个无符号字符作为其输入
- 将无符号int+字符串强制转换为无符号char向量