The other option is to do a base 64 encode:
EncodingUtil.base64Encode(mac);
I'd be surprised if generateMac + convertToHex aren't working for you. They've always worked for me. I'm sure you've looked, but just in case I'd go over the Amazon web services example in the documentation.