【问题标题】:How to read some bytes from BYTE*如何从 BYTE* 读取一些字节
【发布时间】:2026-02-01 23:25:01
【问题描述】:

我有 BYTE 指针。例如这个 BYTE 数组的长度是 10。 如何从 3 个位置 BYTE 数组中读取 4 个字节?

现在我这样做了

BYTE *source = "1234567890\0";
BYTE* tmp = new BYTE[4+1]();
for(int i=0; i<4; i++)
{
tmp[i] = source[i+3];
}

【问题讨论】:

  • 看起来正确,有什么问题?
  • 新语句看起来不正确 - 为什么 [] 后面的括号集?为什么不根据您的需要使用字符串/向量?
  • void-pointers 标签是错误的。我想要类型指针
  • @graham.reeds () 是完全洁净的,它对数组 tmp 进行值初始化。
  • @Andreas 很公平 - 我从来没有这样做过(反正我不记得了)。

标签: c++ pointers memory-management bytearray


【解决方案1】:

1)

 std::vector<BYTE> tmp1(source + 3, source + 7);

2)

BYTE tmp[5];
std::copy(source + 3, source + 7, tmp);

3)

BYTE tmp2[5];
memcpy(tmp, source + 3, 4 * sizeof(source[0]));

【讨论】:

  • 投票支持 std::copy。为什么我从来不记得它的存在?