C++:int到字节数组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (87)

我的java代码中有这个方法,它返回给定int的字节数组:

private static byte[] intToBytes(int paramInt)
{
     byte[] arrayOfByte = new byte[4];
     ByteBuffer localByteBuffer = ByteBuffer.allocate(4);
     localByteBuffer.putInt(paramInt);
     for (int i = 0; i < 4; i++)
         arrayOfByte[(3 - i)] = localByteBuffer.array()[i];
     return arrayOfByte;
}

有人能给我提示吗?我如何将该方法转换为C++?

提问于
用户回答回答于

使用std::vector<unsigned char>:

#include <vector>
using namespace std;

vector<unsigned char> intToBytes(int paramInt)
{
     vector<unsigned char> arrayOfByte(4);
     for (int i = 0; i < 4; i++)
         arrayOfByte[3 - i] = (paramInt >> (i * 8));
     return arrayOfByte;
}
用户回答回答于

一个简单的转换就足够了:

int x;
static_cast<char*>(static_cast<void*>(&x));

C++中的任何对象都可以被重新解释为字节数组。如果要将字节的副本实际复制到单独的数组中,则可以使用std::copy:

int x;
char bytes[sizeof x];
std::copy(static_cast<const char*>(static_cast<const void*>(&x)),
          static_cast<const char*>(static_cast<const void*>(&x)) + sizeof x,
          bytes);

这两个方法都不考虑字节排序,但是由于可以重新解释int作为一个字节数组,自己执行任何必要的修改都是非常简单的。

扫码关注云+社区

领取腾讯云代金券