之前寫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...