c++ - C++中的指针和字节数组

标签 c++ pointers

我是指针的新手,我想做一个函数,将内存中的每个字节从 int 变量添加到 unsigned char 中的每个单元格。请看下面的代码

int main()
{ 
 unsigned char buffer[4] = {0};
 int number = 15
 unsigned char *ptBuffer = &buffer;

 return 0;
}

所以输出是

buffer[0]= 0,
buffer[1]= 0,
buffer[2]= 0,
buffer[3]= F

所以

number = 15 => 0x000F

最佳答案

不依赖别名(这可能会惹恼优化器)的可移植解决方案是使用 C++ 提供的一些位操作。如果你确定一个整数在你的机器上占用 4 个字节(但在生产代码中你真的不应该假设这一点,因为整数的大小是不确定的),它会像这样:

int x = ...;

unsigned char bytes[4] = {
    (x >> 24) & 0xFF,
    (x >> 16) & 0xFF,
    (x >> 8)  & 0xFF,
    (x >> 0)  & 0xFF,
};

>>是按位右移。 &是按位与(1 and 0 = 0, 1 and 1 = 1, 0 and 1 = 0)。

然后您输出它们,例如通过 std::cout << (int)bytes[0] << ... .

关于c++ - C++中的指针和字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8245939/

相关文章:

c++ - 临时和表达行为

c++ - 使用可变参数模板打印列表

android - arm-linux-androideabi编译器使用方法

c++ - 为什么 std::chrono::duration 基于秒

C中复制字符串

c++ - 如何在 Windows 中用 C++ 创建定时器

#ifdefs 中打印值的更改,C

c++ - 我们如何找出地址和值来自数组中的哪个元素在C++中

c - 7.2。Record结构中的程序存在编译器错误

c - 如何在c中读取文本文件,然后将每一行分割成标记?