Problem with recieved data from RF

#include <WString.h>

#include <VirtualWire.h>
#undef int
#undef abs
#undef double
#undef float
#undef round

#define rxPin 8

void setup()

  // Initialise the IO and ISR
  vw_set_ptt_inverted(true);          // Required for RX Link Module
  vw_setup(2000);                     // Bits per sec
  vw_set_rx_pin(rxPin);               // We will be receiving on pin 2 ie the RX pin from the module connects to this pin.
  vw_rx_start();                      // Start the receiver

void loop()
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;

  if (vw_get_message(buf, &buflen))
    String temp;

    for (int i = 0; i < buflen; i++)

I am trying to save the recieved message in a string for further processing (splitting the message up)

From my other arduino I am sending the message “test1|test2”, and if I look at it with Serial.println(buf*); it shows up correctly, but if I look at Serial.println(temp); I get “1161011151164912411610111511650”*
How can I make that into the right “test1|test2” output?
When this all works, I am going to use it to control the tracks on a RC tank. Thats why I want to send multiple commands at the same time.
The RF link takes about 200 ms to transfer a message, and a 200ms delay between each track make its move, is too long. So sending one message with everything in would be the best.

Got help on the IRC channel to fix it...

[20:49:03] [scgtrp]: blddk: uint8_t == byte == an 8-bit value without a sign [20:49:15] [scgtrp]: char == a 7-bit value with a sign, usually used for holding characters [20:55:02] [scgtrp]: blddk: you're appending the string representations of the ascii values of the characters (116 is 't', etc) [20:55:17] [scgtrp]: you want (char)buf [20:56:00] : blddk facedesks [20:56:18] [blddk]: Thank you!! That is MUCH simpler than what I was messing around with... [20:56:23] [scgtrp]: :)