字元與16進製制的轉換 二

2021-05-23 22:14:36 字數 3109 閱讀 9876

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 ...