首先 隻有string才與編碼有關;
byte與其他類型轉換時,要注意大端點還是小端點,
編碼: ascii
unicode gbk utf-8等等
byte 占 8位 可由兩個16進制數(0xff)組成,一個16進制占4位,也可由8位二進制數組成等等,與編碼沒關系,但可用2進制表示,也可由其他進制表示。
“0xff”這樣的16進制字元串轉換成16進制byte
把byte[n]轉換成string;
new string(byte[n],0,length,"gbk");
float占 4位元組 ,float與byte類型轉換
都是通過移位來實作的
4byte轉換成float
左移位
/**
* 位元組轉換為浮點
*
* @param b 位元組(至少4個位元組)
* @param index 開始位置
* @return
*/
public static float byte2float(byte[] b, int index) {
int l;
l = b[index + 0];
l &= 0xff;
l |= ((long) b[index + 1] << 8);
l &= 0xffff;
l |= ((long) b[index + 2] << 16);
l &= 0xffffff;
l |= ((long) b[index + 3] << 24);
return float.intbitstofloat(l);
}
float轉換成4byte
右移位
*
浮點轉換為位元組
*
@param f
@return
*/
public
static byte[] float2byte(float f) {
//
把float轉換為byte[]
int
fbit = float.floattointbits(f);
byte[]
b = new byte[4];
for (int i = 0; i < 4; i++) {
b[i] = (byte) (fbit >> (24 - i * 8));
}
// 翻轉數組
len = b.length;
建立一個與源數組元素類型相同的數組
dest = new byte[len];
為了防止修改源數組,将源數組拷貝一份副本
system.arraycopy(b,
0, dest, 0, len);
byte
temp;
将順位第i個與倒數第i個交換
for
(int i = 0; i < len / 2; ++i) {
temp
= dest[i];
dest[i]
= dest[len - i - 1];
dest[len
- i - 1] = temp;
return dest;