私はこれを達成しようとしています:
ファイルを再構築するためにこれを行う.NETクライアントにbase64文字列として送信する必要があるJava WebサービスにPDFバイト[]があります。
Encoding.Convert(Encoding.Unicode, Encoding.Default, Convert.FromBase64String(inputJava))
クライアント コードを変更することはできません。現在、Java Web サービスは別の .NET Web サービスを呼び出しており、これにより byte[] が base64 文字列に変換されます。
System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(1252), System.Text.Encoding.Unicode, b);
さまざまな方法 (org.apache.commons.codec.binary.Base64 など) で作成できる base64 に加えて、元の byte[] を UTF-16LE byte[] に変換する必要があります...
私はこれを試しました:
byte[] output = new byte[b.length * 2];
for(int i=0; i < b.length; i++)
{
int val = b[i];
if(val < 0) val += 256;
output[2*i + 0] = (byte) (val);
output[2*i + 1] = 0;
}
これは、128 未満の値 (例: 1 => 0100、2 => 0200、...、127 => 7F00) では正常に機能しますが、128 -> 255 を超える値では、同等の 2 バイトを取得する方法がわかりません。値; バイト 156 (9C) の対応する値は 8301 (0x5301) であり、バイト 224 (E0) の対応する値は 12501 (0x7D01) であることはわかっていますが、他のすべての値を取得するアルゴリズムを見つけることができませんでした。
バイト値と対応する UTF-16LE サロゲート ペアの間のマッピング テーブル、または値を 128 から 255 にマッピングするアルゴリズムはありますか?
前もって感謝します!