C ++ - привести int к байтам и написать соответствующий метод теста

0

Я написал метод intToBytes() и соответствующий метод для проверки этой функции. В VisualStudio-Debugger я вижу, что значение "2C" является последней записью вектора. Кроме того, кажется, что у меня есть некоторые проблемы с поиском правильной опции для сравнения двух массивов в моем методе тестирования. Спасибо за вашу помощь.

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 intToBytesTest(){
    int test1 = 44;
    vector<unsigned char> test1Vector = intToBytes(test1);
    BYTE exp1[] = {0x2C , 0x00 , 0x00 , 0x00 };
    BYTE act1[] = {test1Vector.at(0), test1Vector.at(1), test1Vector.at(2), test1Vector.at(3)};
    if (exp1 != act1){ 
        return 1;
    }
    return 0;
}
  • 0
    Проверьте, какой порядок байтов поддерживает ваш чип: en.wikipedia.org/wiki/Endianness
  • 0
    @DonWakefield: все платформы, на которые нацелена Visual Studio (упомянутая в вопросе), имеют порядок байтов.
Показать ещё 2 комментария
Теги:

1 ответ

3
Лучший ответ

Вы не можете сравнивать два необработанных массива BYTE используя ==. Вы на самом деле сравниваете, видите ли они один и тот же массив, а не в том случае, если массивы идентичны.

Вместо этого вы можете использовать std::vector поскольку он имеет перегрузку для == который сравнивает два экземпляра, чтобы увидеть, идентичны ли они.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню