This is a simulation of your code as I don't have a card reader. The code behaves as it should
byte uidByte[] = {0x73, 0x78, 0x0A, 0x43};
void setup()
{
Serial.begin(115200);
String content = "";
for (byte i = 0; i < sizeof(uidByte); i++)
{
Serial.print(uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(uidByte[i], HEX);
content.concat(String(uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(uidByte[i], HEX));
}
Serial.println("\n");
Serial.print("String: ");
content.toUpperCase();
String UID = content.substring(1);
Serial.println(UID);
}
void loop()
{
}
Output
73 78 0A 43
String: 73 78 0A 43
My conclusion is that the problem is not where you think it is.
Which board are you using?
Your topic is not storage related (see About the Storage category) and henced moved to a more suitable category on the forum.