hi,
I needed Base64 equivalency between juce and php, so I just coded the equivalent of toBase64Encoding(), maybe that can be useful to some of you.
I'm pretty sure it could be done in just a few lines, but I choosed to be as close as possible to the juce code, so it is quite a copy-paste :)
It seems to work pretty well as far as I tested.
I'm totally a newb in php thought, so if you find wome weirdnesses in there let me know!
function getBitRange ($data, $bitRangeStart, $numBits) { $res = 0; $byte = $bitRangeStart >> 3; $offsetInByte = $bitRangeStart & 7; $bitsSoFar = 0; while ($numBits > 0 && $byte < count($data)) { $bitsThisTime = min ($numBits, 8 - $offsetInByte); $mask = (0xff >> (8 - $bitsThisTime)) << $offsetInByte; $res |= ((($data[$byte] & $mask) >> $offsetInByte) << $bitsSoFar); $bitsSoFar += $bitsThisTime; $numBits -= $bitsThisTime; ++$byte; $offsetInByte = 0; } return $res; } function juceStyle64encode ($stringToEncode) { $base64EncodingTable = ".ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+"; $size = strlen ($stringToEncode); $data = array(); for ($i = 0; $i < $size; ++$i) $data[] = ord ($stringToEncode[$i]); $numChars = floor ((($size << 3) + 5) / 6); $encodedString = $size . '.'; for ($i = 0; $i < $numChars; ++$i) $encodedString .= $base64EncodingTable[getBitRange ($data, $i * 6, 6)]; return $encodedString; }
so that :
String s ("whatever"); MemoryBlock mb (s.toRawUTF8(), s.getNumBytesAsUTF8()); String encodedString (mb.toBase64Encoding());
would be :
$encodedString = juceStyle64encode ("whatever");