2016-12-09 4 views
1

Я хочу, чтобы отправить письмо с 9 конкретных байтов в организме:Как получить точные байты?

byte one = (byte) 161; 
byte two = (byte) 1; 
byte three = (byte) 254; 
byte four = (byte) 1; 
byte five = (byte) 255; 
byte six = (byte) 255; 
byte seven = (byte) 255; 
byte eight = (byte) 254; 
byte nein = (byte) 255; 

String unicode = new String(new byte[] { one, two, three, four, five, six, seven, eight, nein }, "windows-1258"); 
emailMessage.setText(unicode); 

Everytime Я посылаю эти байты еще 9 байт до конечного пункта. Как я могу это достичь?

Подходящая строка приемника не имеет значения для меня. Меня не интересуют, как символы отображаются визуально. Меня больше интересует информация, шестнадцатеричное значение в характере.

+1

Я думаю, что 9 - это девять не nein - для общей информации –

+0

вы проверили MSB, LSB, padding? –

+0

У вас есть триера, проверяющие кодировку строк приемников? –

ответ

2

Есть относительно хорошее объяснение here или вы можете самостоятельно прочитать RFC 1341.

В основном, только 7-разрядные символы US-ASCII разрешены (некодированные) в электронном письме. Все остальное (включая ваши двоичные байты) должно быть закодировано с использованием некоторой кодировки. Это преобразует ваши 9 байтов в более чем 9 байтов (в зависимости от того, какая кодировка выбрана).

Email (SMTP) НЕ является бинарным протоколом. Вы можете отправлять двоичные данные по электронной почте, но это в основном взлом.

Смежные вопросы