Why do you convert the sgl to an integer string and then to a U8 and then type cast that to a string which you send? All you need is to flatten it to a string (once) and if you want to keep the precision you cannot convert it to a U8.
If you have an SGL and want to read that SGL across a serial link type cast the SGL to a string (just wire it to the type cast function, it defaults to a string), wire that string to the serial write...and then when you read it make sure you get all the bytes (4) and then wire that string to a type cast with an SGL as the specified type. By just type casting you are sending the data as a binary string. Unless you have some reason for adding overhead there is no need to make it a readable string.