java如何接收和发送ASCII数据
作者:tyc880616
这篇文章主要介绍了java如何接收和发送ASCII数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
java接收和发送ASCII数据
使用java开发的程序和C++开发的程序对接,C++端使用的是ascii码
1、java接收端采用ByteBuffer接收到数据后使用GBK解码器解码
public static String getString(ByteBuffer buffer) { Charset charset = null; CharsetDecoder decoder = null; CharBuffer charBuffer = null; try { charset = Charset.forName("GBK"); decoder = charset.newDecoder(); charBuffer = decoder.decode(buffer.asReadOnlyBuffer()); return charBuffer.toString(); } catch (Exception ex) { //ex.printStackTrace(); return ""; } }
2、java发送数据给C++端。
public int SendTcpData(String strData){ byte[] szCmd= new byte[1024]; int iWriteRet = 0; byte bydata[]; try { bydata = strData.getBytes("GBK"); System.arraycopy(bydata, 0, szCmd, 0, bydata.length); int len = bydata.length; ByteBuffer cacheBuffer = ByteBuffer.allocate(len); cacheBuffer.put(szCmd,0,len); cacheBuffer.flip(); int iWriteRet = sock.write(cacheBuffer); if(iWriteRet<0){ } } catch (Exception e) { //e.printStackTrace(); } return iWriteRet; }
java中的ASCII码值
ASCII码
目前计算机中用得最广泛的 字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。
适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。
在键盘上输入任意一个字母 ,显示ASCII码值
import java.util.Scanner; public class Test { public static void main(String[] args)throws Exception{ Scanner in = new Scanner(System.in); String b = in.next(); for( int i=0;i< b.length();i++){ System.out.println( b.charAt(i)+" "+(byte) b.charAt(i)); } } }
输出所有字符及其对应的ASCII码值
package demo; public class TestASCII01 { public static void main(String[] args) { // TODO Auto-generated method stub for(int i=0;i<255;i++){ char a = (char) i; System.out.println(a+" "+i); } } }
常用ASCII 码对照表
第33~126号(共94个)是字符,
其中第48~57号为0~9十个阿拉伯数字;
65~90号为26个大写英文字母,
97~122号为26个小写英文字母,
其余为一些标点符号、运算符号等。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。