Sending hex data serially and receive it back
Here is your code fixed: if you want to send numbers encoded as hex strings that's exactly what you have to do on both ends.
The standard function itoa() is what converts numbers to their string representation, but operating this way you are wasting a lot of resources because to send the number 1 (which can be accomplished by sending exactly one byte) you are sending the string 0x01 (which now requires 4 bytes to be transferred).

const byte numChars = 88;
word receivedChars[numChars];   // an array to store the received data

boolean newData = false;

void setup() {
    Serial.begin(9600);
    Serial.println("&lt;Arduino is ready&gt;");
}

void loop() {   
    uint8_t message[] = {0xA5, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x0d };

    char buf[4];
    for (uint8_t i = 0; i &lt; sizeof(message); i++) {
        itoa(message[i], buf, 16));
        Serial.write(buf, sizeof(buf));
    }
    delay(500);

    recvWithEndMarker();
    showNewData();
}

#define END_MARKER '\n'
void recvWithEndMarker() {
    static byte ndx = 0;
    char rc;

    while (Serial.available() &gt; 0 &amp;&amp; !newData) {
        rc = Serial.read();

        if (rc != END_MARKER) {
            receivedChars[ndx++] = rc;
            if (ndx &gt;= numChars) {
                ndx = numChars - 1;
            }
        } else {
            receivedChars[ndx] = '\0'; // terminate the string
            ndx = 0;
            newData = true;
        }
    }
}

void showNewData() {
    if (newData) {
        Serial.print("data ");
            for (unsigned int i = 0; i &lt; numChars; i++) {
            Serial.print(receivedChars[i], HEX);
        }
        Serial.println();
        newData = false;
    }
}