The Serial.print() can do many things except a nice formatted output.
For example a hex value of "0x03" is printed as 3 with the HEX format.
You could try this:
for(int i=0; i<howmany; i++)
{
int data = Wire.read();
if( data < 0x10)
{
Serial.print( "0"); // add the extra zero in front.
}
Serial.print( data, HEX);
Serail.print( ",");
}
Serial.println();
A new line is for a new package of data. That means the Master (the software on the computer or the hardware Master device) concatenates the data into a single package. That is very specific behaviour. Is there a setting for that which can be turned off ?
To be sure, you could write the 'howMany' to the Serial port as well.
void receiveEvent(int howMany);
{
Serial.print( howMany, DEC);
Serial.print( ":");
...
It is possible to make the receiveEvent() function shorter and faster by printing the data in the loop() with a buffer between the receiveEven() and the loop().
It is even possible to omit that buffer by using the empty receiveEvent() trick.