java案例實(shí)戰(zhàn)之字符串轉(zhuǎn)換為二進(jìn)制
任務(wù)描述
本例要求編寫一個(gè)程序,從鍵盤錄入一個(gè)字符串,將字符串轉(zhuǎn)換為二進(jìn)制數(shù)。在轉(zhuǎn)換時(shí),將字符串中的每個(gè)字符單獨(dú)轉(zhuǎn)換為一個(gè)二進(jìn)制數(shù),將所有二進(jìn)制數(shù)連接起來進(jìn)行輸出。
案例在實(shí)現(xiàn)時(shí),要求使用Math類、String類以及Scanner等常見Java API的常用方法.
運(yùn)行結(jié)果

案例任務(wù)
- 學(xué)會(huì)分析“十進(jìn)制轉(zhuǎn)化成二進(jìn)制”任務(wù)的實(shí)現(xiàn)思路。
- 根據(jù)思路獨(dú)立完成“十進(jìn)制轉(zhuǎn)化成二進(jìn)制”任務(wù)的源代碼編寫、編譯及運(yùn)行。
- 掌握String類、Math類及Scanner類中常用方法的使用。
- 掌握之前學(xué)習(xí)的雙重for循環(huán)以及數(shù)組的相關(guān)知識(shí)。
案例思路
(1) 分析任務(wù)描述可知,鍵盤錄入要轉(zhuǎn)化的字符串。用Scanner實(shí)現(xiàn)。
(2)定義一個(gè)二維數(shù)組。其中4代表每一行長(zhǎng)度。ss.length()根據(jù)鍵盤錄入的字符串表示有多少行。
(3)利用for循環(huán)遍歷字符串,遍歷后用String的charAt()方法獲取每個(gè)字符并轉(zhuǎn)化成int。char與int進(jìn)行運(yùn)算,char的數(shù)值要減去 48,因?yàn)锳SCII碼中0的值是48,1就是49。
(4)轉(zhuǎn)化成int后再用for循環(huán)獲取每一個(gè)int類型的數(shù)進(jìn)行轉(zhuǎn)化成二進(jìn)制賦值給數(shù)組。其中Math.pow()方法是Math類中求冪的方法。
(5)最后用雙重for循環(huán)遍歷二維數(shù)組。將結(jié)果輸出到控制臺(tái)。
案例實(shí)現(xiàn)
//鍵盤錄入要轉(zhuǎn)化的字符串。用Scanner實(shí)現(xiàn)。
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入要轉(zhuǎn)換的字符串:");
String ss = sc.nextLine();
//定義一個(gè)二維數(shù)組。其中4代表每一行長(zhǎng)度。ss.length()根據(jù)鍵盤錄入的字符串表示有多少行。
int [][] arr = new int[ss.length()][4];
//利用for循環(huán)遍歷字符串,遍歷后用String的charAt()方法獲取每個(gè)字符并轉(zhuǎn)化成int。char與int進(jìn)行運(yùn)算,char的數(shù)值要減去 48,因?yàn)锳SCII碼中0的值是48,1就是49。
for (int i = 0; i < ss.length(); i++) {
int charss = (int) ss.charAt(i)-48;
for (int j = 0; j < 4; j++) {
//轉(zhuǎn)化成int后再用for循環(huán)獲取每一個(gè)int類型的數(shù)進(jìn)行轉(zhuǎn)化成二進(jìn)制賦值給數(shù)組。其中Math.pow()方法是Math類中求冪的方法。
arr[i][j] = (int)((charss/Math.pow(2, 3-j))%2);
}
}
// 最后用雙重for循環(huán)遍歷二維數(shù)組。將結(jié)果輸出到控制臺(tái)。
System.out.println("二進(jìn)制的數(shù)是:");
// 最后用雙重for循環(huán)遍歷二維數(shù)組。將結(jié)果輸出到控制臺(tái)。
for (int i = 0; i < ss.length(); i++) {
for (int j = 0; j < 4; j++) {
System.out.print(arr[i][j]);
}
}補(bǔ)充:Java中String與二進(jìn)制碼的相互轉(zhuǎn)換
把字符串轉(zhuǎn)成二進(jìn)制碼
public class stringTest {
public static void main(String[] args) {
String str = "abc";
String binary = toBinary(str);
System.out.println(binary);
}
public static String toBinary(String str){
//把字符串轉(zhuǎn)成字符數(shù)組
char[] strChar=str.toCharArray();
String result="";
for(int i=0;i<strChar.length;i++){
//toBinaryString(int i)返回變量的二進(jìn)制表示的字符串
//toHexString(int i) 八進(jìn)制
//toOctalString(int i) 十六進(jìn)制
result +=Integer.toBinaryString(strChar[i])+ " ";
}
return result;
}
}結(jié)果:abc–>1100001 1100010 1100011
將二進(jìn)制碼轉(zhuǎn)成字符串
public class stringTest {
public static void main(String[] args) {
String binary = "1100001 1100010 1100011";
System.out.println(toString(binary));
}
public static String toString(String binary) {
String[] tempStr=binary.split(" ");
char[] tempChar=new char[tempStr.length];
for(int i=0;i<tempStr.length;i++) {
tempChar[i]=BinstrToChar(tempStr[i]);
}
return String.valueOf(tempChar);
}
//將二進(jìn)制字符串轉(zhuǎn)換成int數(shù)組
public static int[] BinstrToIntArray(String binStr) {
char[] temp=binStr.toCharArray();
int[] result=new int[temp.length];
for(int i=0;i<temp.length;i++) {
result[i]=temp[i]-48;
}
return result;
}
//將二進(jìn)制轉(zhuǎn)換成字符
public static char BinstrToChar(String binStr){
int[] temp=BinstrToIntArray(binStr);
int sum=0;
for(int i=0; i<temp.length;i++){
sum +=temp[temp.length-1-i]<<i;
}
return (char)sum;
}
}結(jié)果:1100001 1100010 1100011 –>abc
總結(jié)
到此這篇關(guān)于java字符串轉(zhuǎn)換為二進(jìn)制的文章就介紹到這了,更多相關(guān)java字符串轉(zhuǎn)換為二進(jìn)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java結(jié)合Spark的數(shù)據(jù)清洗場(chǎng)景及對(duì)應(yīng)的實(shí)現(xiàn)方法
在大數(shù)據(jù)處理中,數(shù)據(jù)清洗是非常重要的一步,數(shù)據(jù)清洗可以幫助我們?nèi)コK數(shù)據(jù)、處理缺失值、規(guī)范數(shù)據(jù)格式等,以確保數(shù)據(jù)質(zhì)量和準(zhǔn)確性,在本文中,我們將介紹如何使用Java結(jié)合Spark框架來實(shí)現(xiàn)數(shù)據(jù)清洗,需要的朋友可以參考下2025-05-05
java處理轉(zhuǎn)義字符↑ → ↓ 保存后的展示還原操作
這篇文章主要介紹了java處理轉(zhuǎn)義字符↑ → ↓ 保存后的展示還原操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
關(guān)于jpa中無法刪除onetomany中many問題的解決
這篇文章主要介紹了關(guān)于jpa中無法刪除onetomany中many問題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
SpringBoot實(shí)現(xiàn)接口數(shù)據(jù)加解密的三種實(shí)戰(zhàn)方案
在金融支付、用戶隱私信息傳輸?shù)葓?chǎng)景中,接口數(shù)據(jù)若以明文傳輸,極易被中間人攻擊竊取,Spring Boot 提供了多種優(yōu)雅的加解密實(shí)現(xiàn)方案,本文將從原理到實(shí)戰(zhàn),帶你掌握三種主流實(shí)現(xiàn)方式,需要的朋友可以參考下2025-05-05
MyBatis自定義映射關(guān)系和關(guān)聯(lián)查詢實(shí)現(xiàn)方法詳解
這篇文章主要介紹了MyBatis自定義映射關(guān)系和關(guān)聯(lián)查詢實(shí)現(xiàn)方法,當(dāng)POJO屬性名與數(shù)據(jù)庫列名不一致時(shí),需要自定義實(shí)體類和結(jié)果集的映射關(guān)系,在MyBatis注解開發(fā)中,使用@Results定義并使用自定義映射,使用 @ResultMap使用自定義映射2023-04-04
springboot?集成activemq項(xiàng)目配置方法
這篇文章主要介紹了springboot?集成activemq項(xiàng)目配置方法,e-car項(xiàng)目配置通過引入activemq依賴,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-04-04
SpringBoot使用RestTemplate實(shí)現(xiàn)HTTP請(qǐng)求詳解
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何使用RestTemplate實(shí)現(xiàn)進(jìn)行HTTP請(qǐng)求,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
springboot+jwt+微信小程序授權(quán)登錄獲取token的方法實(shí)例
本文主要介紹了springboot+jwt+微信小程序授權(quán)登錄獲取token的方法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03

