- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑一个行优先、4 channel 、8 位图像。我想将数据逐个像素地传输到另一个同样大小的图像。因为每个像素有 4*8=32 位,所以我想使用赋值 operator=
在 int
上一次,而不是像 memcpy()
这样的替代品或使用赋值 operator=
在 4 个无符号字符上(数据的实际布局)。
我有以下代码但有一个问题:
CreateEquivalentImages(in, out);
for (int y = 0; y < in.rows; ++y)
{
for (int x = 0; x < in.cols; ++x)
{
int* pixel = (int*)in.data + x + y*width; //line in question
int* outpixel = (int*)out.data + x + y*width;
*outpixel = *pixel;
}
}
(int*)in.data
不明确执行的转换类型。 (int*)in.data
执行哪种类型转换操作默认为?
是int* pixel = reinterpret_cast<int*>(in.data) + x + y*width;
类型转换数据指针的正确方法?
结论:
-Memcpy() and
-typecasting data pointers into char* and then using assignment
在行为(复制原始内存)和这个问题的解决方案上是等价的。但是将原始内存类型转换为另一种类型(甚至是像 int 这样的内部类型),然后使用赋值运算符是特定于平台的,因此是未定义的行为。
最佳答案
我认为您这样做会触发未定义的行为。我建议您单独分配每个组件(我假设为 4 个 unsigned char
值),并依靠您的编译器高效地执行此操作。
参见:
关于c++ - 如何正确地转换数据开始指针(这甚至是一种好习惯)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28769886/
在我生活的世界中,构建一个将所有飞镖都扔到墙上的解决方案,并希望其中一些能命中靶心是一种非常糟糕的解决方案方法。 那么,我的问题出现了,什么时候在约定可接受的生产系统中使用 INSERT IGNORE
在数据处理时,经常会因为index报错而发愁。不要紧,本次来和大家聊聊pandas中处理索引的几种常用方法。 1.读取时指定索引列 很多情况下,我们的数据源是 CSV 文件。假设
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
我是一名优秀的程序员,十分优秀!