C++ 转换字节

标签 c++ arrays

我有以下代码,其中 vector<int>其中包含字节被转换为 char[] .这char[]然后输出。

vector<int> data;
data.push_back(33);
data.push_back(69);
data.push_back(80);
data.push_back(0);
data.push_back(0);
data.push_back(74);
data.push_back(255);

char* result = new char[data.size()];

for(int i = 0; i < data.size(); i++) {
  result[i] = (char)data[i];
  cout << i << " = " << (char)data[i] << endl;
}

cout << "--" << endl;

for(int i = 0; i < sizeof(result); i++) {
  cout << i << " = " << result[i] << endl;
}

此代码产生以下输出。

0 = !
1 = E
2 = P
3 = 
4 = 
5 = J
6 = �
--
0 = !
1 = E
2 = P
3 = 

但是,我希望它是

0 = !
1 = E
2 = P
3 = 
4 = 
5 = J
6 = �
--
0 = !
1 = E
2 = P
3 = 
4 = 
5 = J
6 = �

我怀疑这与尺寸有关,但我不确定。

代码出了什么问题?

最佳答案

您使用 sizeof() 的方式不正确。它返回指针的大小,而不是指向的东西的大小。当您指向项目数组时,无法仅通过其指针来访问所指向事物的大小。

你必须记住你在某处用 new 分配的大小并使用它。

关于C++ 转换字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152992/

相关文章:

Ruby:如何使用符号来表示数组中的事物?

java - 填充 JComboBox 的正确方法?

C++ - cin 垃圾邮件终端

c++ - c 中的 ncr(组合)

javascript - 在 vue 数据对象中使用变量进行嵌套循环计算会导致代码中断

PHP:将数据与来自单个数组的共享 key 组合到新数组中

c++ - 阻止 `const` 成员在另一个别名下被编辑

c++ - 如何创建线程安全的缓冲区/POD?

c++ - 指针稳定吗?

javascript - 按字符串数组过滤javascript数组