Why is this spitting giberish instead of serial numbers?
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;