java如何接收和發(fā)送ASCII數(shù)據(jù)
java接收和發(fā)送ASCII數(shù)據(jù)
使用java開(kāi)發(fā)的程序和C++開(kāi)發(fā)的程序?qū)?,C++端使用的是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),稱(chēng)為ISO 646標(biāo)準(zhǔn)。
適用于所有拉丁文字字母,ASCII碼有7位碼和8位碼兩種形式。
在鍵盤(pán)上輸入任意一個(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è)大寫(xiě)英文字母,
97~122號(hào)為26個(gè)小寫(xiě)英文字母,
其余為一些標(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-02
Springboot如何同時(shí)裝配兩個(gè)相同類(lèi)型數(shù)據(jù)庫(kù)
這篇文章主要介紹了Springboot如何同時(shí)裝配兩個(gè)相同類(lèi)型數(shù)據(jù)庫(kù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Java數(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-08
java線程池合理設(shè)置最大線程數(shù)和核心線程數(shù)方式
這篇文章主要介紹了java線程池合理設(shè)置最大線程數(shù)和核心線程數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
MyBatis中foreach標(biāo)簽的collection屬性的取值方式
這篇文章主要介紹了MyBatis中foreach標(biāo)簽的collection屬性的取值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08

