位元組碼轉換學習

2021-07-25 22:58:12 字數 3283 閱讀 9305

之前寫netty,雖然用的是nenty,實現了netty與protobuf的整合,不過現在看到的成熟的nenty開源專案,都是用netty4寫的,還是header和body,在handler中實現物件的轉換。

學習netty的時候,關於位元組轉換,學習的記錄一下:

第一:運算子

~ 按位非(not)(一元運算) 

& 按位與(and) 

| 按位或(or) 

^ 按位異或(xor) 

>> 右移 

>>> 右移,左邊空出的位以0填充 

<< 左移 

&= 按位與賦值 

|= 按位或賦值 

^= 按位異或賦值 

>>= 右移賦值 

>>>= 右移賦值,左邊空出的位以0填充 

<<= 左移賦值

第二:位元組轉換(引用他人的)

下面是位元組轉換類,byte與short, int, long, float, double, string相互轉換;網路位元組序htons, htonl等實現;byte轉十六進製制字串、二進位制字串實現。

public class byteutil

/**

* 通過byte陣列取到short

* * @param b

* @param index

* 第幾位開始取

* @return

*/

public static short getshort(byte b, int index)

/**

* 轉換int為byte陣列

* * @param bb

* @param x

* @param index

*/

public static void putint(byte bb, int x, int index)

/**

* 通過byte陣列取到int

* * @param bb

* @param index

* 第幾位開始

* @return

*/

public static int getint(byte bb, int index)

/**

* 轉換long型為byte陣列

* * @param bb

* @param x

* @param index

*/

public static void putlong(byte bb, long x, int index)

/**

* 通過byte陣列取到long

* * @param bb

* @param index

* @return

*/

public static long getlong(byte bb, int index)

/**

* 字元到位元組轉換

* * @param ch

* @return

*/

public static void putchar(byte bb, char ch, int index)

} /**

* 位元組到字元轉換

* * @param b

* @return

*/

public static char getchar(byte b, int index)

/**

* float轉換byte

* * @param bb

* @param x

* @param index

*/

public static void putfloat(byte bb, float x, int index)

} /**

* 通過byte陣列取得float

* * @param bb

* @param index

* @return

*/

public static float getfloat(byte b, int index)

/**

* double轉換byte

* * @param bb

* @param x

* @param index

*/

public static void putdouble(byte bb, double x, int index)

} /**

* 通過byte陣列取得double

* * @param bb

* @param index

* @return

*/

public static double getdouble(byte b, int index)

public static void puthexstring(byte bb, string s, int index)

}private static byte chartobyte(char c)

public static string gethexstring(byte b, int index, int count)

for (int i = index; i < count + index; i++)

}

return stringbuilder.tostring();

} public static string getbinarystring(int d,int length)

return stringbuilder.tostring();

}public static string getbinaryreversestring(int d,int length)

stringbuilder.reverse();

return stringbuilder.tostring();

}//網路位元組逆序

public static byte reversendian(byte b,int count, boolean big)

{byte by;

byte data = new byte[count];

for(int i=0;ips:注意位元組陣列轉換的時候,編碼要注意,有一篇文章介紹  

gbk編碼中英文只佔乙個位元組,所以中間的時候最好是gbk,之後再轉utf。

縱橫表轉換學習

動態橫表轉縱表 建表語句 if not object id class1 is null drop table class1 gocreate table class1 student nvarchar 2 數學 int,物理 int,英語 int,語文 int insert class1 sele...

字串與ASCII碼的轉換學習總結

x input 請輸入乙個字串 y int input 請輸入乙個ascii碼 print x,的ascii碼為 z map ord,x for i in z print i,end print n print y,的ascii碼為 chr y map function,iterable,funct...

boost中型別轉換學習

型別轉換在很多時候需要使用上,方便且安全的轉換是很有必要的。從c語言的一些api到c 中提供的stringstream流都有很多方式可以實現,了解他們的特點可以讓我們在日常編碼中編寫出漂亮的 一 c語言中常用的型別轉換 char szbuf 100 int nvalue 100000000 spri...