长到字节数组转换器在C++中不起作用

Long to byte array converter doesn't work in C++

本文关键字:C++ 不起作用 转换器 到字节 数组      更新时间:2023-10-16

我做了一个应该可以工作的转换器,并且在某些情况下有效,但在这种情况下它不起作用。

问题是,当cout生成的unsigned char时,一次一切都是 255,另一次是 0。这段代码有什么问题??

这是我的代码。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void longToBytes(long num, unsigned char arr[4])
{
    arr[0]= (int)((num >> 24) & 0xFF);
    arr[1]= (int)((num >> 16) & 0xFF);
    arr[2]= (int)((num >> 8) & 0xFF);
    arr[3]= (int)( num & 0xFF);
}
long bytesToLong(unsigned char arr[4])
{
    return ((arr[0] << 24) + (arr[1] << 16) + (arr[2] << 8) + arr[3]);
}
void writelongs(long mas[], int howMany)
{
    for(int i=0; i<howMany; i++)
    {
        unsigned char bytes[4];
        cout<<mas[i]<<endl;
        longToBytes(mas[i], bytes);
        for(int j=0; j<4; j++)
        {
            cout<<(int)bytes[i]; //Problem here.
        }
        cout<<endl;
    }
}
int main()
{
    long aray[2]={-118, 1034};
    writelongs(aray,2);
    return 0;
}
for(int j=0; j<4; j++)
{
    cout<<(int)bytes[i]; // Problem here.
}

您使用了索引 i 而不是 j。

for (int j = 0 ; j < 4 ; j++)
{
    cout << (int)bytes[j]; // Problem solved.
}