You get the first byte correctly but miss the next bytes because you are busy printing out the first byte instead of receiving the following bytes.
Your code cannot to all that at once, especially if you are using Arduino libraries like that.
This is the upsides and downsides of Arduino, it lets you do simple things easily, but either your requirements already grew out of being simple and suitable for Arduino, or you are using the Arduino libraries without considering what they are capable of and how.
So instead of waiting for first byte and immediately printing it out, it might make more sense to wait and read bytes until you have read some whole packet and have enough time to print the bytes before next byte arrives.
Another thing, how do you even know your Arduino can use 230400 bps rate? If it uses a 16 MHz clock source, you cannot get exacltly 230400 but the closes baud rate is 222222 bps, and that is already a 3.55% error to what you need. Usually the target is better than 1% error, but in a pinch many devices might work within 2% error because in theory it allows both devices to be within 2% of the nominal rate. Having an error of 3.5% is usually too large and very close to the point of not working at all.
Edit: OK, it cannot be a software issue because Arduino UART does use interrupts and uses a ring buffer for buffering data.
What is known is that a 16 MHz AVR cannot exactly hit 230400 bps and will have 3.5% error in the baud rate which exceeds recommendations for maximum baud rate error. What even makes the situation worse is that instead of a more precise crystal, the Arduino Mega2560 uses a ceramic resonator with additional 0.5% tolerance, 0.3% temperature stability, and 0.2% aging. A crystal would have in any case better than 0.01% tolerance for all scenarios. So the most likely cause is that the Arduino Mega2560 can be simply said not to support baud rate of 230400 reliably so that is why it does not work.
And also the Mega256 data sheet says that minimum input high voltage is 0.6*Vcc, so using a 5V MCU that will be 3.0V minimum, so it will be within specification to receive a 3.3V signal. So the voltage issue is extremely unlikely.