В зависимости от ваших значений в state[4][4]
, вы, скорее всего, в конечном итоге переполните массив x
(помните, вам нужно место не более FF
(2 символа) + 1 для завершения '\0'
).Это неопределенное поведение.Исправьте это (char x[3];
), и все будет в порядке.Вот это mcve :
#include <iostream>
#include <cstdint>
#include <cstdio>
using namespace std;
void hexD(uint8_t state[4][4])
{
char x[3];
for(int i = 0; i < 4; i++)
{
cout << "\n";
for(int j = 0; j < 4; j++)
{
cout << j <<"\n"; //displays the value of j
sprintf(x, "%x", state[i][j]);
cout << x << "\t";
}
}
}
uint8_t state[4][4]={
255,255,255,255,
0, 1, 2, 3,
0, 1, 2, 3,
0, 1, 2, 3,
};
int main()
{
hexD(state);
}