Why is this spitting giberish instead of serial numbers? #include &lt;TrueRandom.h&gt;

void setup() {
  char* ss= (char*)TrueRandom.random(111111111,999999999);
  char* finalss;
  Serial.begin(9600);
  finalss[0] = ss[0];
  finalss[1] = ss[1];
  finalss[2] = ss[2];
  finalss[3] = '-';
  finalss[4] = ss[3]; 
  finalss[5] = ss[4]; 
  finalss[6] = '-';
  finalss[7] = ss[5]; 
  finalss[8] = ss[6];
  finalss[9] = ss[7]; 
  finalss[10] = ss[8];
  Serial.println (finalss);
}

void loop() {
  ; // Do nothing
}


This is supposed to output a randomly generated number in this format nnn-nn-nnnn.
Updated Code (Doesn't seem to output anything):

#include &lt;TrueRandom.h&gt;

void setup() {
  String ss;
  ss = (String)TrueRandom.random(111111111,999999999);
  String finalss;
  Serial.begin(9600);
  finalss[0] = ss[0];
  finalss[1] = ss[1];
  finalss[2] = ss[2];
  finalss[3] = '-';
  finalss[4] = ss[3]; 
  finalss[5] = ss[4]; 
  finalss[6] = '-';
  finalss[7] = ss[5]; 
  finalss[8] = ss[6];
  finalss[9] = ss[7]; 
  finalss[10] = ss[8];
  Serial.println (finalss);
}

void loop() {
  ; // Do nothing
}
Casting a number to a char* doesn't convert the number to a string. Instead it converts the number to a pointer and starts reading chars from that location.

Either pass the number to a String constructor, or pass it through ltoa().

EDIT:

String ss(...);


or

char ss[11];
ltoa(..., ss, 10);


Also, don't forget to allocate memory for finalss and NUL-terminate it.

char finalss[12];
 ...
finalss[11] = 0;