c#
socket傳送十六進製制字串 (十六進製制字串與其他型別的轉換) 收藏
socket 傳送十六進製制的字串
專案用到 socket tcp/ip 傳送/接受 十六進製制的字串,因為c# socket 傳送接受的都是byte (位元組陣列),現在記錄tyte 與各資料型別之間的轉換
注:c#的位元組陣列 byte 存放的時間是0-255的整型資料
byte 關鍵字代表一種整型,該型別按下錶所示儲存值:
可如下例所示宣告並初始化 byte 型別的變數:
byte mybyte = 255;
在以上宣告中,整數 255 從 int 隱式轉換為 byte。如果整數超出了 byte 的範圍,將產生編譯錯誤。
引子:1.字串轉byte/byte轉字串
2.十六進製制字串轉byte/byte轉十六進製制字串
3.十六進製制字串與數值型別之間轉換
4.漢字轉十六進製制字串
1.字串轉byte/byte轉字串
這個是經常用到的,c#中也是比較簡單的用
encoding.utf8.getbytes(string data);
encoding.utf8.getstring(tyte data, 0, length);
要注意的是不同的編碼,對資料的長度甚至是內容是有影響的(一般收發兩地都使用相同的編碼)
2.十六進製制字串轉byte/byte轉十六進製制字串
十六進製制字串轉byte利用convert.tobyte()方法;byte轉十六進製制字串利用bitconverter.tostring()或者bytes[i].tostring("x2").
view plaincopy to clipboardprint?
///
/// 16進製制字串轉位元組陣列
///
///
///
private static byte strtotohexbyte(string hexstring)
///
/// 位元組陣列轉16進製制字串
///
///
///
public static string bytetohexstr(byte bytes)
}
return returnstr;
} ///
/// 16進製制字串轉位元組陣列
///
///
///
private static byte strtotohexbyte(string hexstring)
///
/// 位元組陣列轉16進製制字串
///
///
///
public static string bytetohexstr(byte bytes)
}return returnstr;
} 另外,更簡單的
byte 轉十六進製制字串還可以利用bitconverter.tostring方法,這個更容易使用。
string str0x = bitconverter.tostring(byte tyt,0,length);
返回的字串是帶「-」分離的十六進製制字串,可以去掉:
string str0x = bitconverter.tostring(byte tyt,0,recv).replace("-", "");
bitconverter類提供基礎資料型別與位元組陣列相互轉換的方法。
3.十六進製制字串與數值型別之間轉換
十六進製制字串與數值型別之間轉換主要用到的類有 bitconverter 、int32、 string、 convert
int32.parse(),uint.parse(),
bitconverter.getbytes(),bitconverter.tosingle(),
string.format()
convert.toint32(),convert.tobyte()等方法
具體參考上篇blog
4.漢字轉十六進製制字串
view plaincopy to clipboardprint?
///
/// 從漢字轉換到16進製制
// ///
/// 編碼,如"utf-8","gb2312"
/// 是否每字元用逗號分隔
///
public static string tohex(string s, string charset, bool fenge)
system.text.encoding chs = system.text.encoding.getencoding(charset);
byte bytes = chs.getbytes(s);
string str = "";
for (int i = 0; i < bytes.length; i++)
", bytes[i]);
if (fenge && (i != bytes.length - 1))
", ",");
}
}
return str.tolower();
}
///
/// 從16進製制轉換成漢字
///
///
/// 編碼,如"utf-8","gb2312"
///
public static string unhex(string hex, string charset)
// 需要將 hex 轉換成 byte 陣列。
byte bytes = new byte[hex.length / 2];
for (int i = 0; i < bytes.length; i++)
catch
}
system.text.encoding chs = system.text.encoding.getencoding(charset);
return chs.getstring(bytes);
}
資料轉換 16進製制字元二
在openeuler 推薦 或ubuntu或windows 不推薦 中完成下面任務 1 參考 gmt 0009 2012 sm2密碼演算法使用規範 第6節 資料轉換 在utils.h和utils.c中完成位串與 位位元組串的轉換功能 10 int bitstr2bytearr unsigned ch...
16進製制與字串轉換
字串為 string 型別並可寫成兩種形式,即用引號引起來和用 引起來。用引號引起來的字串括在雙引號 內 good morning a string literal 並且可以包含包括換碼序列在內的任何字元 string a u0066 n backslash,letter f,new line 注意...
字串與十進位制,16進製制轉換
問題1 講乙個十進位制數字的字串表示轉換成對應的整數。舉例 將 1234 轉換成整數1234.c 收藏 將字串s轉換成相應的整數 int atoi char s return n 問題2 將乙個十六進製制數的字串表示形式轉換成對應的整數。所謂的十六進製制數的字串形式是指字串只包含 0 9 或者 a ...