Du kannst die beiden bytes auch einzeln schicken.
Code:
short s;   //bit 0-15
unsigned char low;  // bit 0-7
unsigned char high; // bit 8-15

// auseinanderbauen:
low = (unsigned char) (s & 0x00ff);
high = (unsigned char) (((s>>8) & 0x00ff);

//zusammen setzen
s = ((short) high << 8) | low;
Den Overhead das in ein String zu konvertieren brauchst du nicht, das geht am PC einfacher mit itoa oder sprintf.

Oder ganz ohne Überflüssigen Code mit einem Komposit:
Code:
typedef union
{
   unsigned short s;
   struct
	{ 
		unsigned char low;
		unsigned char high;
	};
} __attribute__((packed)) data_t;

data_t data;

// Zugriff über data.s, data.high und data.low