Я застрял на самом тупом из возможных препятствий, которые я только могу придумать.Я разрабатываю приложение флаттера, которое должно отправлять через сокет TCP (в локальной сети Wi-Fi) массив байтов.
Указанные байты являются необработанными и не представляют значимых символов в любой кодировке (у меня есть значения, такие как 0xFFи так далее).Мой код успешно соединяется и отправляет данные, используя метод socket write
.К сожалению, этот метод принимает только закодированный String
в качестве аргумента, а его создание из кодов символов портит мое сообщение.
Вот мой код:
var message = Uint8List(4);
var bytedata = ByteData.view(message.buffer);
bytedata.setUint8(0, 0x01);
bytedata.setUint8(1, 0x07);
bytedata.setUint8(2, 0xFF);
bytedata.setUint8(3, 0x88);
socket.write(String.fromCharCodes(message))
при получении 0x01 и 0x07правильно, 0xFF и 0x88 превращаются в пару других байтов, 0xC3BF и 0xC287 (проверено с помощью команды netcat -l 8080 | hexdump
).
Я уже некоторое время гуглю для способа отправки необработанных байтов без их кодированиякак строки, но ничего не смог найти.Разве это просто не предусмотрено?Я понимаю, что Flutter и Dart предназначены для высокоуровневой веб-разработки, но мне это кажется абсурдным.