memcpy 从无符号字符 * 到无符号 int
memcpy from unsigned char * to unsigned int
我不确定以下C++代码的作用(我已经用点替换了无关紧要的部分):
unsigned char* p = ...;
unsigned int metaNum;
memcpy( &metaNum, p, sizeof( unsigned int ) );
p += sizeof( unsigned int );
for ( unsigned int m = 0; m < metaNum; m++ ) {
...
}
我知道memcpy
:
源和 目标指针与此函数无关;结果是 数据的二进制副本。
我仍然不确定metaNum
的解释是什么.这是显而易见的还是与实现有关?
这不是特定于实现的:metaNum
被解释为一个sizeof(unsigned int)
字节序列,p
指向的相同字节数的内容被复制到其中。
这里唯一起作用的是字节序:复制到metaNum
中的相同字节序列将根据硬件存储多字节值的方式进行不同的解释,例如unsigned int
.如果序列来自相同的硬件,则解释将是相同的。否则,您需要使用ntoh
/hton
函数将字节序列按正确的顺序排列。
相关文章:
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- C++:使用没有位移位的指针将无符号字符转换为无符号 int
- 是否可以将无符号 int 的最大值转换为 int 并将结果转换为 -1?
- 为什么QByteArray的大小是"int"而不是"无符号int"
- 无符号长整型和无符号 int 之间有什么区别,这 2 种类型应该如何在 c# 中封送?
- 使用无符号int作为二进制来在c++中实现一个集
- C++如何将变量传递给带有无符号 int & 的参数uint16_t函数?
- 为什么我不能使用在 Visual C++ 32 位中实现运算符无符号 int() 作为数组索引的类?
- 视觉C++转换和写入值为 10 的无符号 int 给出 5 个字节
- uint8_t在转换为无符号 int 时未打印正确的值
- G++ 错误:重载的"abs(无符号 int)"的调用不明确
- 将 3D 矢量浮点打包到无符号 int 中并将其解压缩
- 如何使用 JNI 将 double 和无符号 int 从本机 c 库返回到 java
- 为什么printf和cout为此无符号int提供了不同的输出
- memcpy 从无符号字符 * 到无符号 int
- C++ 重载与有符号和无符号 int 不同
- 创建具有未定义溢出的无符号 int
- 将大双精度转换为无符号 int 期间堆栈损坏
- 错误:成员引用基类型"uint32_t"(也称为"无符号 INT")不是结构或联合
- 无符号int的比较始终是正确的(NPOS问题?)