Java字節(jié)序,java整型數(shù)與網(wǎng)絡(luò)字節(jié)序 byte[] 數(shù)組轉(zhuǎn)換關(guān)系(ByteArrayOutputStream用法)

Java代碼?

/**

*?通信格式轉(zhuǎn)換

*

*?Java和一些windows編程語言如c蒜危、c++般哼、delphi所寫的網(wǎng)絡(luò)程序進行通訊時宛蚓,需要進行相應(yīng)的轉(zhuǎn)換

*?高、低字節(jié)之間的轉(zhuǎn)換

*?windows的字節(jié)序為低字節(jié)開頭

*?linux,unix的字節(jié)序為高字節(jié)開頭

*?java則無論平臺變化鸿竖,都是高字節(jié)開頭

??*/???


public?class?FormatTransfer?{??

/**

??*?將int轉(zhuǎn)為低字節(jié)在前沧竟,高字節(jié)在后的byte數(shù)組

??*?@param?n?int

??*?@return?byte[]

??*/??

public?static?byte[]?toLH(int?n)?{??

byte[]?b?=?new?byte[4];??

b[0]?=?(byte)?(n?&?0xff);??

b[1]?=?(byte)?(n?>>?8?&?0xff);??

b[2]?=?(byte)?(n?>>?16?&?0xff);??

b[3]?=?(byte)?(n?>>?24?&?0xff);??

return?b;??

}???


/**

??*?將int轉(zhuǎn)為高字節(jié)在前,低字節(jié)在后的byte數(shù)組

??*?@param?n?int

??*?@return?byte[]

??*/??

public?static?byte[]?toHH(int?n)?{??

byte[]?b?=?new?byte[4];??

b[3]?=?(byte)?(n?&?0xff);??

b[2]?=?(byte)?(n?>>?8?&?0xff);??

b[1]?=?(byte)?(n?>>?16?&?0xff);??

b[0]?=?(byte)?(n?>>?24?&?0xff);??

return?b;??

}???


/**

??*?將short轉(zhuǎn)為低字節(jié)在前千贯,高字節(jié)在后的byte數(shù)組

??*?@param?n?short

??*?@return?byte[]

??*/??

public?static?byte[]?toLH(short?n)?{??

byte[]?b?=?new?byte[2];??

b[0]?=?(byte)?(n?&?0xff);??

b[1]?=?(byte)?(n?>>?8?&?0xff);??

return?b;??

}???


/**

??*?將short轉(zhuǎn)為高字節(jié)在前屯仗,低字節(jié)在后的byte數(shù)組

??*?@param?n?short

??*?@return?byte[]

??*/??

public?static?byte[]?toHH(short?n)?{??

byte[]?b?=?new?byte[2];??

b[1]?=?(byte)?(n?&?0xff);??

b[0]?=?(byte)?(n?>>?8?&?0xff);??

return?b;??

}???




/**

??*?將將int轉(zhuǎn)為高字節(jié)在前,低字節(jié)在后的byte數(shù)組?

public?static?byte[]?toHH(int?number)?{

??int?temp?=?number;

??byte[]?b?=?new?byte[4];

??for?(int?i?=?b.length?-?1;?i?>?-1;?i--)?{

????b?=?new?Integer(temp?&?0xff).byteValue();

????temp?=?temp?>>?8;

??}

??return?b;

}?

public?static?byte[]?IntToByteArray(int?i)?{

????byte[]?abyte0?=?new?byte[4];

????abyte0[3]?=?(byte)?(0xff?&?i);

????abyte0[2]?=?(byte)?((0xff00?&?i)?>>?8);

????abyte0[1]?=?(byte)?((0xff0000?&?i)?>>?16);

????abyte0[0]?=?(byte)?((0xff000000?&?i)?>>?24);

????return?abyte0;

}?

*/???


/**

??*?將float轉(zhuǎn)為低字節(jié)在前搔谴,高字節(jié)在后的byte數(shù)組

??*/??

public?static?byte[]?toLH(float?f)?{??

return?toLH(Float.floatToRawIntBits(f));??

}???


/**

??*?將float轉(zhuǎn)為高字節(jié)在前魁袜,低字節(jié)在后的byte數(shù)組

??*/??

public?static?byte[]?toHH(float?f)?{??

return?toHH(Float.floatToRawIntBits(f));??

}???


/**

??*?將String轉(zhuǎn)為byte數(shù)組

??*/??

public?static?byte[]?stringToBytes(String?s,?int?length)?{??

while?(s.getBytes().length?<?length)?{??

s?+="?";??

??}??

return?s.getBytes();??

}???



/**

??*?將字節(jié)數(shù)組轉(zhuǎn)換為String

??*?@param?b?byte[]

??*?@return?String

??*/??

public?static?String?bytesToString(byte[]?b)?{??

StringBuffer?result?=new?StringBuffer("");??

int?length?=?b.length;??

for?(int?i=0;?i

result.append((char)(b?&?0xff));??

??}??

return?result.toString();??

}???


/**

??*?將字符串轉(zhuǎn)換為byte數(shù)組

??*?@param?s?String

??*?@return?byte[]

??*/??

public?static?byte[]?stringToBytes(String?s)?{??

return?s.getBytes();??

}???


/**

??*?將高字節(jié)數(shù)組轉(zhuǎn)換為int

??*?@param?b?byte[]

??*?@return?int

??*/??

public?static?int?hBytesToInt(byte[]?b)?{??

int?s?=?0;??

for?(int?i?=?0;?i?<?3;?i++)?{??

if?(b?>=?0)?{??

????s?=?s?+?b;??

}else?{??

s?=?s?+256?+?b;??

????}??

s?=?s?*256;??

??}??

if?(b[3]?>=?0)?{??

s?=?s?+?b[3];??

}else?{??

s?=?s?+256?+?b[3];??

??}??

return?s;??

}???


/**

??*?將低字節(jié)數(shù)組轉(zhuǎn)換為int

??*?@param?b?byte[]

??*?@return?int

??*/??

public?static?int?lBytesToInt(byte[]?b)?{??

int?s?=?0;??

for?(int?i?=?0;?i?<?3;?i++)?{??

if?(b[3-i]?>=?0)?{??

s?=?s?+?b[3-i];??

}else?{??

s?=?s?+256?+?b[3-i];??

????}??

s?=?s?*256;??

??}??

if?(b[0]?>=?0)?{??

s?=?s?+?b[0];??

}else?{??

s?=?s?+256?+?b[0];??

??}??

return?s;??

}???



/**

??*?高字節(jié)數(shù)組到short的轉(zhuǎn)換

??*?@param?b?byte[]

??*?@return?short

??*/??

public?static?short?hBytesToShort(byte[]?b)?{??

int?s?=?0;??

if?(b[0]?>=?0)?{??

s?=?s?+?b[0];??

}else?{??

s?=?s?+256?+?b[0];??

????}??

s?=?s?*256;??

if?(b[1]?>=?0)?{??

s?=?s?+?b[1];??

}else?{??

s?=?s?+256?+?b[1];??

??}??

short?result?=?(short)s;??

return?result;??

}???


/**

??*?低字節(jié)數(shù)組到short的轉(zhuǎn)換

??*?@param?b?byte[]

??*?@return?short

??*/??

public?static?short?lBytesToShort(byte[]?b)?{??

int?s?=?0;??

if?(b[1]?>=?0)?{??

s?=?s?+?b[1];??

}else?{??

s?=?s?+256?+?b[1];??

????}??

s?=?s?*256;??

if?(b[0]?>=?0)?{??

s?=?s?+?b[0];??

}else?{??

s?=?s?+256?+?b[0];??

??}??

short?result?=?(short)s;??

return?result;??

}???


/**

??*?高字節(jié)數(shù)組轉(zhuǎn)換為float

??*?@param?b?byte[]

??*?@return?float

??*/??

public?static?float?hBytesToFloat(byte[]?b)?{??

int?i?=?0;??

Float?F?=new?Float(0.0);??

i?=?((((b[0]&0xff)<<8?|?(b[1]&0xff))<<8)?|?(b[2]&0xff))<<8?|?(b[3]&0xff);??

return?F.intBitsToFloat(i);??

}???


/**

??*?低字節(jié)數(shù)組轉(zhuǎn)換為float

??*?@param?b?byte[]

??*?@return?float

??*/??

public?static?float?lBytesToFloat(byte[]?b)?{??

int?i?=?0;??

Float?F?=new?Float(0.0);??

i?=?((((b[3]&0xff)<<8?|?(b[2]&0xff))<<8)?|?(b[1]&0xff))<<8?|?(b[0]&0xff);??

return?F.intBitsToFloat(i);??

}???


/**

??*?將byte數(shù)組中的元素倒序排列

??*/??

public?static?byte[]?bytesReverseOrder(byte[]?b)?{??

int?length?=?b.length;??

byte[]?result?=?new?byte[length];??

for(int?i=0;?i

result[length-i-1]?=?b;??

??}??

return?result;??

}???


/**

??*?打印byte數(shù)組

??*/??

public?static?void?printBytes(byte[]?bb)?{??

int?length?=?bb.length;??

for?(int?i=0;?i

System.out.print(bb?+"?");??

??}??

System.out.println("");??

}???


public?static?void?logBytes(byte[]?bb)?{??

int?length?=?bb.length;??

String?out?="";??

for?(int?i=0;?i

out?=?out?+?bb?+"?";??

??}???


}???


/**

??*?將int類型的值轉(zhuǎn)換為字節(jié)序顛倒過來對應(yīng)的int值

??*?@param?i?int

??*?@return?int

??*/??

public?static?int?reverseInt(int?i)?{??

int?result?=?FormatTransfer.hBytesToInt(FormatTransfer.toLH(i));??

return?result;??

}???


/**

??*?將short類型的值轉(zhuǎn)換為字節(jié)序顛倒過來對應(yīng)的short值

??*?@param?s?short

??*?@return?short

??*/??

public?static?short?reverseShort(short?s)?{??

short?result?=?FormatTransfer.hBytesToShort(FormatTransfer.toLH(s));??

return?result;??

}???


/**

??*?將float類型的值轉(zhuǎn)換為字節(jié)序顛倒過來對應(yīng)的float值

??*?@param?f?float

??*?@return?float

??*/??

public?static?float?reverseFloat(float?f)?{??

float?result?=?FormatTransfer.hBytesToFloat(FormatTransfer.toLH(f));??

return?result;??

}???


}??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市敦第,隨后出現(xiàn)的幾起案子峰弹,更是在濱河造成了極大的恐慌,老刑警劉巖芜果,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鞠呈,死亡現(xiàn)場離奇詭異,居然都是意外死亡右钾,警方通過查閱死者的電腦和手機蚁吝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舀射,“玉大人窘茁,你說我怎么就攤上這事〈嘌蹋” “怎么了山林?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長邢羔。 經(jīng)常有香客問我驼抹,道長,這世上最難降的妖魔是什么拜鹤? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任框冀,我火速辦了婚禮,結(jié)果婚禮上敏簿,老公的妹妹穿的比我還像新娘左驾。我一直安慰自己,他們只是感情好极谊,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布诡右。 她就那樣靜靜地躺著,像睡著了一般轻猖。 火紅的嫁衣襯著肌膚如雪帆吻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天咙边,我揣著相機與錄音猜煮,去河邊找鬼次员。 笑死,一個胖子當(dāng)著我的面吹牛王带,可吹牛的內(nèi)容都是我干的淑蔚。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼愕撰,長吁一口氣:“原來是場噩夢啊……” “哼刹衫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起搞挣,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤带迟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后囱桨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仓犬,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年舍肠,在試婚紗的時候發(fā)現(xiàn)自己被綠了搀继。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡翠语,死狀恐怖律歼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布身堡,位于F島的核電站侯养,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鲸鹦。R本人自食惡果不足惜慧库,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望馋嗜。 院中可真熱鬧齐板,春花似錦、人聲如沸葛菇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眯停。三九已至济舆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間莺债,已是汗流浹背滋觉。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工签夭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人椎侠。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓第租,卻偏偏與公主長得像,于是被迫代替她去往敵國和親我纪。 傳聞我的和親對象是個殘疾皇子慎宾,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容