Ⅰ java中如何將數字轉換為字元串
在Java中,將數字轉換為字元串的方式多種多樣,其中最簡單直接的方式是使用加法操作符將數字與空字元串連接,例如:String aa = 1+"";這種方式雖然簡潔,但並不是最佳實踐。更為推薦的方法是使用String類的構造函數或者格式化字元串的方法,如String.valueOf(1),或者使用格式化字元串的API,如Integer.toString(1)或String.format("數字是:%d", 1)。這些方法不僅提高了代碼的可讀性,也使得代碼更加健壯,易於維護。
值得注意的是,直接使用加法操作符將數字與字元串連接可能會導致不希望的字元串拼接行為,例如,如果變數a的值為1,b的值為2,直接執行String result = a + b; 結果可能會是"12",而非期望的"12"。因此,為了保證代碼的正確性和可讀性,建議使用String類提供的方法進行數字到字元串的轉換。
此外,當需要將數字轉換為特定格式的字元串時,例如將數字轉換為二進制、八進制或十六進制,可以使用其他方法,如Integer.toBinaryString(1)、Integer.toOctalString(1)或Integer.toHexString(1)。這些方法能夠提供更加靈活的字元串轉換選項,適用於不同的應用場景。
總的來說,Java提供了多種將數字轉換為字元串的方法,選擇合適的方法不僅能夠提高代碼的效率,還能增強代碼的可讀性和可維護性。在實際開發中,根據具體需求和場景選擇最合適的轉換方式是至關重要的。
Ⅱ 如何用JAVA語言將十六進制數轉換成二進制數,並輸出
我的思路很簡單:
publicclass六轉2
{
publicstaticvoidmain(String[]args)
{
System.out.println(" ==========16轉二進制========== ");
init();
}//初始化!
privatestaticvoidinit()
{
//字元串形式的:16進制!
Strings="ACCC";
//字元串形式十進制--作為橋梁!
intsint=Integer.valueOf(s,16);
//十進制在轉換成二進制的字元串形式輸出!
Stringbin=Integer.toBinaryString(sint);
//輸出!
System.out.println(bin);
}
}
Ⅲ java中16進制轉字元串的問題
你代碼有問題,看我的。、
packagecom.weixin.util;
importjava.io.ByteArrayOutputStream;
publicclassShiLiuJinZhi{
/**
*@date:2015年5月14日上午10:36:02
*@Description:轉化字元串為十六進制編碼
*@params
*@return
*/
publicstaticStringtoHexString(Strings){
Stringstr="";
for(inti=0;i<s.length();i++){
intch=(int)s.charAt(i);
Strings4=Integer.toHexString(ch);
str=str+s4;
}
returnstr;
}
/**
*@date:2015年5月14日上午10:35:53
*@Description:轉化十六進制編碼為字元串
*@params
*@return
*/
(Strings){
byte[]baKeyword=newbyte[s.length()/2];
for(inti=0;i<baKeyword.length;i++){
try{
baKeyword[i]=(byte)(0xff&Integer.parseInt(s.substring(
i*2,i*2+2),16));
}catch(Exceptione){
e.printStackTrace();
}
}
try{
s=newString(baKeyword,"utf-8");//UTF-16le:Not
}catch(Exceptione1){
e1.printStackTrace();
}
returns;
}
//轉化十六進制編碼為字元串
(Strings){
byte[]baKeyword=newbyte[s.length()/2];
for(inti=0;i<baKeyword.length;i++){
try{
baKeyword[i]=(byte)(0xff&Integer.parseInt(s.substring(
i*2,i*2+2),16));
}catch(Exceptione){
e.printStackTrace();
}
}
try{
s=newString(baKeyword,"utf-8");//UTF-16le:Not
}catch(Exceptione1){
e1.printStackTrace();
}
returns;
}
publicstaticvoidmain(String[]args){
System.out.println(encode("aaa"));
System.out.println(decode(encode("aaa")));
}
/*
*16進制數字字元集
*/
privatestaticStringhexString="0123456789ABCDEF";
/*
*將字元串編碼成16進制數字,適用於所有字元(包括中文)
*/
publicstaticStringencode(Stringstr){
//根據默認編碼獲取位元組數組
byte[]bytes=str.getBytes();
StringBuildersb=newStringBuilder(bytes.length*2);
//將位元組數組中每個位元組拆解成2位16進制整數
for(inti=0;i<bytes.length;i++){
sb.append(hexString.charAt((bytes[i]&0xf0)>>4));
sb.append(hexString.charAt((bytes[i]&0x0f)>>0));
}
returnsb.toString();
}
/*
*將16進制數字解碼成字元串,適用於所有字元(包括中文)
*/
publicstaticStringdecode(Stringbytes){
ByteArrayOutputStreambaos=newByteArrayOutputStream(
bytes.length()/2);
//將每2位16進制整數組裝成一個位元組
for(inti=0;i<bytes.length();i+=2)
baos.write((hexString.indexOf(bytes.charAt(i))<<4|hexString
.indexOf(bytes.charAt(i+1))));
returnnewString(baos.toByteArray());
}
//第二種方法:
//將指定byte數組以16進制的形式列印到控制台
//復制代碼代碼如下:
/*publicclassUtil{
publicUtil(){
}
*//**
*將指定byte數組以16進制的形式列印到控制台
*@paramhintString
*@parambbyte[]
*@returnvoid
*//*
(Stringhint,byte[]b){
System.out.print(hint);
for(inti=0;i<b.length;i++){
Stringhex=Integer.toHexString(b[i]&0xFF);
if(hex.length()==1){
hex='0'+hex;
}
System.out.print(hex.toUpperCase()+"");
}
System.out.println("");
}
*//**
*@parambbyte[]
*@returnString
*//*
(byte[]b){
Stringret="";
for(inti=0;i<b.length;i++){
Stringhex=Integer.toHexString(b[i]&0xFF);
if(hex.length()==1){
hex='0'+hex;
}
ret+=hex.toUpperCase();
}
returnret;
}
*//**
*將兩個ASCII字元合成一個位元組;如:"EF"-->0xEF
*@paramsrc0byte
*@paramsrc1byte
*@returnbyte
*//*
publicstaticbyteuniteBytes(bytesrc0,bytesrc1){
byte_b0=Byte.decode("0x"+newString(newbyte[]{src0}))
.byteValue();
_b0=(byte)(_b0<<4);
byte_b1=Byte.decode("0x"+newString(newbyte[]{src1}))
.byteValue();
byteret=(byte)(_b0^_b1);
returnret;
}
*//**
*將指定字元串src,以每兩個字元分割轉換為16進制形式如:"2B44EFD9"-->byte[]{0x2B,0x44,0xEF,0xD9}
*@paramsrcString
*@returnbyte[]
*//*
publicstaticbyte[]HexString2Bytes(Stringsrc){
byte[]ret=newbyte[8];
byte[]tmp=src.getBytes();
for(inti=0;i<8;i++){
ret[i]=uniteBytes(tmp[i*2],tmp[i*2+1]);
}
returnret;
}
}*/
}