java如何接收和发送ASCII数据

 更新时间:2023年09月28日 14:34:31   作者: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个小写英文字母,

其余为一些标点符号、运算符号等。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot 多线程事务回滚的实现

    SpringBoot 多线程事务回滚的实现

    本文是基于springboot的@Async注解开启多线程,并通过自定义注解和AOP实现的多线程事务,避免繁琐的手动提交/回滚事务,感兴趣的可以了解一下
    2024-02-02
  • mybatis插入与批量插入返回ID的原理详解

    mybatis插入与批量插入返回ID的原理详解

    这篇文章主要给大家介绍了关于mybatis插入与批量插入返回ID的原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • SpringBoot使用RESTful接口详解

    SpringBoot使用RESTful接口详解

    RESTful是一种web软件风格,它不是标准也不是协议,它不一定要采用,只是一种风格,它倡导的是一个资源定位(url)及资源操作的风格,这篇文章主要介绍了SpringBoot使用RESTful接口
    2022-10-10
  • Springboot如何同时装配两个相同类型数据库

    Springboot如何同时装配两个相同类型数据库

    这篇文章主要介绍了Springboot如何同时装配两个相同类型数据库,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java数据结构之顺序表篇

    Java数据结构之顺序表篇

    顺序表,全名顺序存储结构,是线性表的一种。线性表用于存储逻辑关系为“一对一”的数据,顺序表自然也不例外,不仅如此,顺序表对数据物理存储结构也有要求。顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时数据元素间不留缝隙
    2022-01-01
  • Spark SQL 编程初级实践详解

    Spark SQL 编程初级实践详解

    这篇文章主要为大家介绍了Spark SQL 编程初级实践详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 解决IDEA错误 Cause: java.sql.SQLException: The server time zone value的问题

    解决IDEA错误 Cause: java.sql.SQLException: The server time zone

    这篇文章主要介绍了解决IDEA错误 Cause: java.sql.SQLException: The server time zone value的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • java线程池合理设置最大线程数和核心线程数方式

    java线程池合理设置最大线程数和核心线程数方式

    这篇文章主要介绍了java线程池合理设置最大线程数和核心线程数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • MyBatis中foreach标签的collection属性的取值方式

    MyBatis中foreach标签的collection属性的取值方式

    这篇文章主要介绍了MyBatis中foreach标签的collection属性的取值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 全面解析Java中的GC与幽灵引用

    全面解析Java中的GC与幽灵引用

    一般的应用程序不会涉及到 Reference 编程, 但是了解这些知识会对理解 GC 的工作原理以及性能调优有一定帮助,在实现一些基础性设施比如缓存时也可能会用到,希望本文能有所帮助
    2013-09-09

最新评论