java如何接收和發(fā)送ASCII數(shù)據(jù)
java接收和發(fā)送ASCII數(shù)據(jù)
使用java開發(fā)的程序和C++開發(fā)的程序?qū)樱珻++端使用的是ascii碼
1、java接收端采用ByteBuffer接收到數(shù)據(jù)后使用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發(fā)送數(shù)據(jù)給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碼
目前計算機中用得最廣泛的 字符集及其編碼,是由美國國家標(biāo)準(zhǔn)局(ANSI)制定的ASCII碼(American Standard Code for Information Interchange,美國標(biāo)準(zhǔn)信息交換碼),它已被國際標(biāo)準(zhǔn)化組織(ISO)定為國際標(biāo)準(zhǔn),稱為ISO 646標(biāo)準(zhǔn)。
適用于所有拉丁文字字母,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)); } } }
輸出所有字符及其對應(yīng)的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十個阿拉伯?dāng)?shù)字;
65~90號為26個大寫英文字母,
97~122號為26個小寫英文字母,
其余為一些標(biāo)點符號、運算符號等。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot 多線程事務(wù)回滾的實現(xiàn)
本文是基于springboot的@Async注解開啟多線程,并通過自定義注解和AOP實現(xiàn)的多線程事務(wù),避免繁瑣的手動提交/回滾事務(wù),感興趣的可以了解一下2024-02-02Springboot如何同時裝配兩個相同類型數(shù)據(jù)庫
這篇文章主要介紹了Springboot如何同時裝配兩個相同類型數(shù)據(jù)庫,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11Java數(shù)據(jù)結(jié)構(gòu)之順序表篇
順序表,全名順序存儲結(jié)構(gòu),是線性表的一種。線性表用于存儲邏輯關(guān)系為“一對一”的數(shù)據(jù),順序表自然也不例外,不僅如此,順序表對數(shù)據(jù)物理存儲結(jié)構(gòu)也有要求。順序表存儲數(shù)據(jù)時,會提前申請一整塊足夠大小的物理空間,然后將數(shù)據(jù)依次存儲起來,存儲時數(shù)據(jù)元素間不留縫隙2022-01-01解決IDEA錯誤 Cause: java.sql.SQLException: The server time zone
這篇文章主要介紹了解決IDEA錯誤 Cause: java.sql.SQLException: The server time zone value的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08java線程池合理設(shè)置最大線程數(shù)和核心線程數(shù)方式
這篇文章主要介紹了java線程池合理設(shè)置最大線程數(shù)和核心線程數(shù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12MyBatis中foreach標(biāo)簽的collection屬性的取值方式
這篇文章主要介紹了MyBatis中foreach標(biāo)簽的collection屬性的取值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08