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