Я работаю с неподписанными массивами символов и файловым вводом-выводом.
Моя проблема в том, что я не знаю, как узнать, сколько байтов файла я передал.
Этопредназначен для AES Encryption Utility, которая шифрует байты любого файла с шагом 16 байт.
Ранее я пытался использовать strlen, но я узнал, что это завершается каждым нулевым символом.
Iнужно иметь возможность включать NULL-символы как часть блока данных для шифрования.
Итак, мне нужно знать, как я могу определить, меньше ли фактическое количество элементов в массиве без знака меньше 16. `
// I declared an unsigned char array f_buffer to handle the bytes of the file
unsigned char f_buffer[16];
// I pass in the data into the array
// srcF was opened in binary, out mode
srcF.read(f_buffer, 16);
// Padding
int oglen = ARRAYSIZE(f_buffer);
int padlen = oglen;
if (padlen % 16 != 0)
{
cout << padlen << endl;
padlen = (padlen / 16 + 1) * 16;
}
unsigned char* padblock = new unsigned char[padlen];
for (int i = 0; i < padlen; i++)
{
if (i >= oglen)
padblock[i] = 0;
else
padblock[i] = f_buffer[i];
}
` Это не работает как "cout << padlen << endl;"строка никогда не выполняется. </p>
Я подозреваю, что "ARRAYSIZE" возвращает размер, с которым я объявил массив.
В любом случае, как определить количество байтов, переданных в массив?