C ++ Определить фактическое количество байтов в массиве - PullRequest
0 голосов
/ 21 октября 2019

Я работаю с неподписанными массивами символов и файловым вводом-выводом.

Моя проблема в том, что я не знаю, как узнать, сколько байтов файла я передал.

Этопредназначен для 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" возвращает размер, с которым я объявил массив.

В любом случае, как определить количество байтов, переданных в массив?

...