转自《对JAVA中char、ASCII、byte、writeUTF、readUTF的认识》
[http://www.longdw.com/java-char-ascii-byte-writeutf-readutf/] 来源
1 writeUTF
如果通过android是个网络socket tcp server, 里面是readUTF
private static void testUTF() {
try {
DataOutputStream dos = new DataOutputStream(new FileOutputStream(
new File(“K://test.txt”)));
dos.writeUTF(“png”);
DataInputStream dis = new DataInputStream(new FileInputStream(
new File("K://test.txt")));
byte[] data = new byte[dis.available()];
dis.read(data);
for (byte b : data) {
System.out.println(Integer.toHexString(b & 0xFF) + " ");
}
} catch (Exception e) {
e.printStackTrace();
}
}
打印结果:(16进制表示)
0
3
70
6e
67
writeUTF在写入数据流的时候会加上两个字节以表示字节的长度,0 3其实二进制就是0000 0011,表示后面有3个字节的长度,70 6e 67对应的ASCII就是png。
2 readUTF收到的数据
如果android socket server 里面写的是writeUTF发一个“0”,那么socket recv那么c函数这边收到的是 0x 0x1 0x30