如何将int32_t放入char数组? (C ++)

时间:2013-09-18 16:43:39

标签: c++ int

我该怎么做:

int32_t x = someValue;

进入我的char数组:

char * msg = new char[65546]();

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:3)

这完全取决于您希望将值存储在数组中的方式。 如果要逐字节存储,可以使用以下代码:

 int32_t x=someValue;
 char *ptr = (char*)&x;
 char *msg = new char[5];
 for(int i=0;i<4;++i, ++ptr)
    msg[i] = *ptr;

使用上述方法时应小心。因为有些系统使用big-endian而其他系统可能使用little-endian。

另一方面,如果要逐位存储到char数组中,请使用以下命令:

 int32_t x=someValue;
 int digs[12], count=0;
 char *msg = new char[12];
 while(x>0)
 {
     digs[count++]=x%10;
     x/=10;
 }
 int i=0;
 while(count--)
 {
     msg[i++] = digs[count] +'0';
 }

无论哪种方式都有效。但更喜欢第二个更好。因为很容易转换回整数。

答案 1 :(得分:2)

如果您想打印该值,为什么不这样做呢?

std::cout << "x = " << x << '\n';

答案 2 :(得分:1)

    char* msg = new char[123];
int32_t x = 123;
int offset = 0;
memcpy(msg + offset, reinterpret_cast<char*>(&x), sizeof(int32_t));