Es könnte vll. was bringen, wenn du immer 4 Bytes liest statt 2 ... und evtl. statt substr direkt über die array-notation gehst.
Ansonsten bringts vll. was auf Base64 umzusteigen, das macht die Datei dann nicht doppelt so lang sondern nnur 4/3
Ansonsten: Könntest du diese Große Datei nicht einfach seperat übergeben?
So wie ein Upload-Feld in einem Formular als multipart request, sodass du im
xml nur noch den dateinamen reinschriebst, und die eigentliche datei seperat übergibst?
Wäre
imho die bessere Lösung ...