【问题标题】:Convert integers to char arrays(byte's)将整数转换为 char 数组(字节)
【发布时间】:2013-04-07 02:32:33
【问题描述】:

更新: 我可以轻松地从字节到整数,但我目前的做法似乎不太好。

这是我当前的代码:

static unsigned char* Int32ToBytes(signed int n)
{
    unsigned char bytes[4];
    for(int i = 0;i<4;i++)
        bytes[3-i] = (n & (255 << (i*8))) >> (i*8);
    return bytes;
}

我正在使用它来写入字节:

fwrite(Int32ToBytes(-1), 1 , 4 , file );

当我希望它输出FF FF FF FF(有符号整数)时,它正在输出:FB 9C 8B 28

有什么想法吗?感谢您的帮助:)

【问题讨论】:

  • 不应该是字节[3-i] = n & (255
  • idk 这就是为什么我在这里问 xD 这样做时我得到 0C 1C C7 46
  • 我错过了一些东西,试试这个 bytes[3-i] = (n & (255 > (i*8)。顺便说一句,您使用的是什么语言?
  • C/C++ 是我的语言。不,仍然没有运气:(
  • 我也认为你使用的代码只是 n & 255 大声笑。

标签: int


【解决方案1】:

这似乎对我有用 http://ideone.com/o6Llf9

void process(int x)
{
    for(int i = 0;i<4;i++)
    {
        unsigned char res = (x & (255 << (i*8))) >> (i*8);
        printf("%x " ,res);
    }
}

int main()
{
    int n;
    while (scanf("%d",&n)!=EOF) process(n);
    return 0;
}

类似的方法也可以

for(int i = 0;i<4;i++)
{
     bytes[3-i] = n & 255
     n = n >> 8
}

【讨论】:

    【解决方案2】:

    www.cplusplus.com/reference/cstdlib/itoa/ 它把 int 变成 char。例子: int test; char buffer[33]; itoa(test, buffer, 10)。您需要包含 stdlib.h。

    【讨论】:

    • 好吧,它支持有符号和无符号的区别吗?以及如何将 str 转换为 4 字节长的 char 数组?
    • 它应该支持有符号/无符号整数。我认为问题是关于如何将 int 转换为 char?无论如何,我假设您正在谈论 std::string 对象。请澄清您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2018-11-19
    • 1970-01-01
    • 2015-08-23
    相关资源
    最近更新 更多