'toBaseSixteen' has a trivial solution because you're not converting 'a decimal number', but an integer that's represented by binary bits. Base 2 to Base 2^N can be done by taking the N least significant bits, converting them to a base-N digit, and shifting the original number right N places.
If you want to make your own generic base-changing code, you should use the template from Integer and implement parseInt(String, int) and toString(int, int), so that you can 'eat your own dog food' (convert an integer to a String, convert that String back to the original integer) to test that it works.