--edit с более BGND information--Преобразование строки из MemoryStream в двоичную [] содержит ведущих дерьмо
A (черный ящик) COM объект возвращает мне строку. Второй COM-объект ожидает такую же строку, что и в качестве байта [], и возвращает байт [] с обработанными данными. Это будет загружаться в браузер как загружаемый, нечитаемый для человека файл, который будет загружен в автономное приложение на стороне клиента.
так что я получаю строку inputString от 1 COM и преобразовать его в байт [] следующим образом
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, inputString);
obj = ms.ToArray();
я кормить его 2-й COM и читать его обратно. Результат записывается в браузер.
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", "attachment; filename="test.dat");
Response.BinaryWrite(obj);
Ошибка возникает во 2-й COm, поскольку форматирование неверно. Я пошел проверить исходную строку, и это было прекрасно. Затем я перекачал результат 1-го ком прямо в браузер и смотрел, что получилось. Оказалось, что где-то вдоль дороги добавляются дополнительные нечитаемые символы. Каковы эти персонажи, для чего они используются, и как я могу помешать им заставить мой второй COM размалывать?
В нечитаемые символы такого рода:
NUL/SOH/NUL/NUL/NUL/FF/FF/FF/FF/SOH/NUL/NUL/NUL и т.д.
Любые идеи?
--Answer--
Использование
System.Text.Encoding.UTF8.GetBytes(theString)
, а затем
BinaryFormatter.Serialize()
Когда вы говорите «это дерьмо», «это» ссылается на что-либо в вашем посте или вы говорите, что есть что-то еще, но вы не можете вставить его или описать? – 2008-12-05 10:47:21
D'oh. Некоторые комментарии - это не что иное, как вежливое ;-) – 2008-12-05 10:50:58
Если это самое худшее (слово), с которым вы сталкиваетесь в своей жизни, вам не о чем беспокоиться;) – 2008-12-05 10:53:32