Problem with 433Mhz rf link code

Hello,
I've been tyring this code out with a cheap 433mhz transmitter/receiver kit from ebay.
Transmitter code (Arduino Mega):

// transmitter.pde
//
// Simple example of how to use VirtualWire to transmit messages
// Implements a simplex (one-way) transmitter with an TX-C1 module
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@airspayce.com)
// Copyright (C) 2008 Mike McCauley
// $Id: transmitter.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $

#include <VirtualWire.h>

const int led_pin = 13;
const int transmit_pin = 12;
const int receive_pin = 11;
const int transmit_en_pin = 3;

void setup()
{
    // Initialise the IO and ISR
    vw_set_tx_pin(transmit_pin);
    vw_set_rx_pin(receive_pin);
    vw_set_ptt_pin(transmit_en_pin);
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);       // Bits per sec
    pinMode(led_pin, OUTPUT);
}

byte count = 1;

void loop()
{
  char msg[7] = {'h','e','l','l','o',' ','#'};

  msg[6] = count;
  digitalWrite(led_pin, HIGH); // Flash a light to show transmitting
  vw_send((uint8_t *)msg, 7);
  vw_wait_tx(); // Wait until the whole message is gone
  digitalWrite(led_pin, LOW);
  delay(1000);
  count = count + 1;
}

Receiver code (Arduino Uno):

// receiver.pde
//
// Simple example of how to use VirtualWire to receive messages
// Implements a simplex (one-way) receiver with an Rx-B1 module
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@airspayce.com)
// Copyright (C) 2008 Mike McCauley
// $Id: receiver.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $

#include <VirtualWire.h>

const int led_pin = 13;
const int transmit_pin = 12;
const int receive_pin = 11;
const int transmit_en_pin = 3;

void setup()
{
    delay(1000);
    Serial.begin(9600);	// Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_tx_pin(transmit_pin);
    vw_set_rx_pin(receive_pin);
    vw_set_ptt_pin(transmit_en_pin);
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);	 // Bits per sec

    vw_rx_start();       // Start the receiver PLL running

    pinMode(led_pin, OUTPUT);
}

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

    if (vw_get_message(buf, &buflen)) // Non-blocking
    {
	int i;

        digitalWrite(led_pin, HIGH); // Flash a light to show received good message
	// Message with a good checksum received, dump it.
	Serial.print("Got: ");
	
	for (i = 0; i < buflen; i++)
	{
	    Serial.print(buf[i], HEX);
	    Serial.print(' ');
	}
	Serial.println();
        digitalWrite(led_pin, LOW);
    }
}

The transmitter and receiver communicate clearly together. When the transmitter transmits, the onboard led blinks, and when the receiver receives, it's onboard led blinks. But when I open the serial monitor, instead of seeing "Hello" (because I think that's what the code is supposed to send), I get this (in the serial monitor):

setup
Got: 68 65 6C 6C 6F 20 3 
Got: 68 65 6C 6C 6F 20 4 
Got: 68 65 6C 6C 6F 20 5 
Got: 68 65 6C 6C 6F 20 6 
Got: 68 65 6C 6C 6F 20 7 
Got: 68 65 6C 6C 6F 20 8 
Got: 68 65 6C 6C 6F 20 9 
Got: 68 65 6C 6C 6F 20 A 
Got: 68 65 6C 6C 6F 20 B 
Got: 68 65 6C 6C 6F 20 C 
Got: 68 65 6C 6C 6F 20 D 
Got: 68 65 6C 6C 6F 20 E 
Got: 68 65 6C 6C 6F 20 F 
Got: 68 65 6C 6C 6F 20 10 
Got: 68 65 6C 6C 6F 20 11 
Got: 68 65 6C 6C 6F 20 12 
Got: 68 65 6C 6C 6F 20 13 
Got: 68 65 6C 6C 6F 20 14 
Got: 68 65 6C 6C 6F 20 15 
Got: 68 65 6C 6C 6F 20 16 
Got: 68 65 6C 6C 6F 20 17 
Got: 68 65 6C 6C 6F 20 18 
Got: 68 65 6C 6C 6F 20 19 
Got: 68 65 6C 6C 6F 20 1A 
Got: 68 65 6C 6C 6F 20 1B 
Got: 68 65 6C 6C 6F 20 1C 
Got: 68 65 6C 6C 6F 20 1D 
Got: 68 65 6C 6C 6F 20 1E 
Got: 68 65 6C 6C 6F 20 1F 
Got: 68 65 6C 6C 6F 20 20 
Got: 68 65 6C 6C 6F 20 21 
Got: 68 65 6C 6C 6F 20 22 
Got: 68 65 6C 6C 6F 20 23 
Got: 68 65 6C 6C 6F 20 24

Why an I not getting hello in the serial monitor? What is the problem?
Thanks!

You are getting the Hex value of the ASCII code for the letters. No surprise really when you print the data using
    Serial.print(buf[i], HEX);from a buffer defined as being an int rather than a char.

    uint8_t buf[VW_MAX_MESSAGE_LEN];

So how could I "convert" the HEX to the good characters?

I think you just need to remove HEX from here:

Serial.print(buf[i], HEX);

Does your device have a push to talk switch? If not, these setup lines are usually not needed:

vw_set_ptt_pin(transmit_en_pin);
vw_set_ptt_inverted(true); // Required for DR3100

I have removed the HEX from the line:

for (i = 0; i < buflen; i++)
	{
	    Serial.print(buf[i]);
	    Serial.print(' ');
	}

Instead of

for (i = 0; i < buflen; i++)
	{
	    Serial.print(buf[i]HEX);
	    Serial.print(' ');
	}

But now it gives me the letters in DEC (decimal)

Got: 104 101 108 108 111 32 128

What can I do?

Oh and I don't have a PTT on this setup

I don't know then, I'd have to experiment a little at home.

Ok. Could you do a bit of experimenting please, if you have the time?

What I was thinking was I'd look at my remote control code, each button press sent a character from a keypad read '1' to '9' and 'A' to 'D'.
The receiver then did a switch:case on it:

switch(incomingByte){
case '0':
:
: 
case 'D':

:
:
}

So I can see what I used to do that.

Serial.print((char)buf[i]);