2
Использование Java 8 для разработки Android.Как я могу напечатать строку байта целого числа в сокет в Java?
Как напечатать целое число в base256 в сокете? Это код, который я пытался почему-то печатает 5 байт ...
PrintWriter out = new PrintWriter(
new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
int FileSize = 430200;
byte[] BytFileSize = ByteBuffer.allocate(4).putInt(FileSize).array();
String StrFileSize = new String(BytFileSize, "ISO-8859-1");
out.print(StrFileSize);
out.flush();
Он печатает:
"00 06 c2 90 78"
ОЖИДАЕМОГО является:
"00 06 90 78"
странно, что он ставит «c2» между двумя 16-битными частями ...
'Печать' и 'base 256' являются взаимно противоречивыми. Что заставляет вас думать, что количество base-256 может быть представлено как String? Почему вы делаете всю эту свертку, когда 'DataOutputStream.writeInt()' уже существует? – EJP
В основном потому, что я не знал, что DataOutputStream существует. Большая часть моего опыта программирования находится на C++, и я просто изучаю Java для переноса моего клиента на Android. В C++ тип std :: string может содержать базовые 256 данных без проблем, так как это в основном (8-разрядный) char [], завернутый в класс ... Тип строки по умолчанию Java (разочаровывает) (16-разрядный) char [] и использует unicode по умолчанию ... Причина, по которой я хочу использовать строку, а не byte [], заключается в том, что я предпочитаю писать ООП, когда это возможно, и у меня есть строковые данные для отправки. Возможно, я просто напишу класс stdstring, который будет лучше соответствовать моим потребностям. – Willdorf
http://stackoverflow.com/questions/33617245/is-there-a-string-type-in-java-based-on-on-an-8-bit-byte-array Я написал здесь небольшой класс, но оцените любые более простые решения! Спасибо вам всем! – Willdorf