Issue is the '00' in the hexadecimal input value, because in the input it is consider like a end of line, even if the buffer size is 8 only the 42 is written in the DB.
char* hexaValue= new char[9];
strcpy(hexaValue, "420000F3");
cliRC = SQLBindParameter(statementHandle, 1, SQL_PARAM_INPUT, SQL_C_DEFAULT, SQL_VARCHAR, 8, 0, hexaValue, 0, NULL);
what are the proper option to end up with x'420000F3' written in the DB not just x'42'