Each of the row structures has a toSring() method generated for it that creates a comma delimited string for each of the rows when invoked. Theoretically if this is insufficient for you, you can overwrite this at some point (i.e. tJavaRow) with your own implementation. Or, you can take this generated string and call replaceAll(",",<your delimiter here>) to turn the delimiter into what you want it to be and replaceAll("null",<null replacement here>) to reformat the string.
Something like utils.md5Hash(row4.toString().replaceAll(",","\t").replaceAll("null","THIS IS NULL"))
Hope that answers your question.