C#字節(jié)數(shù)組(byte[])和字符串相互轉(zhuǎn)換方式
C#字節(jié)數(shù)組(byte[])和字符串相互轉(zhuǎn)換
通過C#中的system.text.encoding獲取字符串的編碼可以有ASCII,DEFAULT,utf-8以及其他一些方式
對于英文而言這幾種所獲取的編碼是沒有太大區(qū)別的,而中文則大有不同,其中DEFAULT所采取的是GB2312
可以通過一下方式進(jìn)行確認(rèn),程序運(yùn)行后會發(fā)現(xiàn)bufOfGB和buf是相同的
? ? ? ? ? ? ? ? string str = "hello,我的祖國";
? ? ? ? ? ? ? ? byte[] bufOfGB = System.Text.Encoding.GetEncoding("gb2312").GetBytes(str);
? ? ? ? ? ? ? ? Array.ForEach(bufOfGB,m=>Console.WriteLine(m));
? ? ? ? ? ? ? ? Console.WriteLine(System.Text.Encoding.Default);
? ? ? ? ? ? ? ? byte[] buf = System.Text.Encoding.Default.GetBytes(str);
? ? ? ? ? ? ? ? Array.ForEach(buf,m=>Console.WriteLine(m));
? ? ? ? ? ? ? ? Console.WriteLine("-------------");
? ? ? ? ? ? ? ? byte[] bufOfASCII = System.Text.Encoding.ASCII.GetBytes(str);
? ? ? ? ? ? ? ? Array.ForEach(bufOfASCII,m=>Console.WriteLine(m));
? ? ? ? ? ? ? ? Console.WriteLine("-------------");
? ? ? ? ? ? ? ? byte[] bufOfUTF = System.Text.Encoding.UTF8.GetBytes(str);
? ? ? ? ? ? ? ? Array.ForEach(bufOfUTF,m=>Console.WriteLine(m));
? ? ? ? ? ? ? ? Console.WriteLine("-------------");byte[] byteArray ={43,45,67,88,23,1f}
string str = System.Text.Encoding.Default.GetString(byteArray);C#字節(jié)數(shù)組向類型的轉(zhuǎn)化
字節(jié)數(shù)組與圖像
? ? ? #region BytesToBmp【函數(shù)】將字節(jié)數(shù)組轉(zhuǎn)化為圖像
? ? ? ? /// <summary>
? ? ? ? /// 【函數(shù)】將字節(jié)數(shù)組轉(zhuǎn)化為圖像
? ? ? ? /// </summary>
? ? ? ? /// <param name="buffer"></param>
? ? ? ? /// <returns></returns>
? ? ? ? public static Image BytesToBmp(byte[] buffer)
? ? ? ? {
? ? ? ? ? ? MemoryStream ms = new MemoryStream(buffer);
? ? ? ? ? ? ms.Position = 0;
? ? ? ? ? ? Image img = Image.FromStream(ms);
? ? ? ? ? ? ms.Close();
? ? ? ? ? ? return img;
? ? ? ? }
? ? ? ? #endregion
?
? ? ? ? #region BmpToBytes【函數(shù)】將圖像轉(zhuǎn)化為字節(jié)數(shù)組
? ? ? ? /// <summary>
? ? ? ? /// 【函數(shù)】將圖像轉(zhuǎn)化為字節(jié)數(shù)組
? ? ? ? /// </summary>
? ? ? ? /// <param name="Bit"></param>
? ? ? ? /// <returns></returns>
? ? ? ? public static byte[] BmpToBytes(Bitmap Bit)
? ? ? ? {
? ? ? ? ? ? byte[] back = null;
? ? ? ? ? ? MemoryStream ms = new MemoryStream();
? ? ? ? ? ? Bit.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
? ? ? ? ? ? back = ms.GetBuffer();
? ? ? ? ? ? return back;
? ? ? ? }
? ? ? ? #endregion字節(jié)數(shù)組與字符串
? ? ? ? #region StringToBytes【函數(shù)】將字符串轉(zhuǎn)化為字節(jié)組
? ? ? ? /// <summary>
? ? ? ? /// 【函數(shù)】將字符串轉(zhuǎn)化為字節(jié)組
? ? ? ? /// </summary>
? ? ? ? /// <param name="str"></param>
? ? ? ? /// <returns></returns>
? ? ? ? public static byte[] StringToBytes(string str)
? ? ? ? {
? ? ? ? ? ? byte[] data = System.Text.Encoding.Default.GetBytes(str);
? ? ? ? }
? ? ? ? #endregion
?
? ? ? ? #region BytesToString【函數(shù)】將字節(jié)數(shù)組轉(zhuǎn)化為字符串
? ? ? ? /// <summary>
? ? ? ? /// 【函數(shù)】將字節(jié)數(shù)組轉(zhuǎn)化為字符串
? ? ? ? /// </summary>
? ? ? ? /// <param name="data"></param>
? ? ? ? /// <returns></returns>
? ? ? ? public static string BytesToString(byte[] data)
? ? ? ? {
? ? ? ? ? ? string str = System.Text.Encoding.Default.GetString(data);
? ? ? ? ? ? return str;
? ? ? ? }
? ? ? ? #endregion字節(jié)數(shù)組與整數(shù)
? ?#region BytesToInt【函數(shù)】byte數(shù)組轉(zhuǎn)int數(shù)組 ?
? ? ? ? /// <summary> ?
? ? ? ? /// 【函數(shù)】byte數(shù)組轉(zhuǎn)int數(shù)組
? ? ? ? /// </summary> ?
? ? ? ? /// <param name="src">源byte數(shù)組</param> ?
? ? ? ? /// <param name="offset">起始位置</param> ?
? ? ? ? /// <returns></returns> ?
? ? ? ? public static int[] BytesToInt(byte[] src, int offset)
? ? ? ? {
? ? ? ? ? ? int[] values = new int[src.Length / 4];
? ? ? ? ? ? for (int i = 0; i < src.Length / 4; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? int value = (int)((src[offset] & 0xFF)
? ? ? ? ? ? ? ? ? ? ? ? | ((src[offset + 1] & 0xFF) << 8)
? ? ? ? ? ? ? ? ? ? ? ? | ((src[offset + 2] & 0xFF) << 16)
? ? ? ? ? ? ? ? ? ? ? ? | ((src[offset + 3] & 0xFF) << 24));
? ? ? ? ? ? ? ? values[i] = value;
? ? ? ? ? ? ? ? offset += 4;
? ? ? ? ? ? }
? ? ? ? ? ? return values;
? ? ? ? }
? ? ? ? #endregion
?
? ? ? ? #region IntToBytes【函數(shù)】int數(shù)組轉(zhuǎn)byte數(shù)組?
? ? ? ? /// <summary> ?
? ? ? ? /// 【函數(shù)】int數(shù)組轉(zhuǎn)byte數(shù)組 ?
? ? ? ? /// </summary> ?
? ? ? ? /// <param name="src">源int數(shù)組</param>?
? ? ? ? /// <param name="offset">起始位置,一般為0</param> ?
? ? ? ? /// <returns>values</returns> ?
? ? ? ? public static byte[] IntToBytes(int[] src, int offset)
? ? ? ? {
? ? ? ? ? ? byte[] values = new byte[src.Length * 4];
? ? ? ? ? ? for (int i = 0; i < src.Length; i++)
? ? ? ? ? ? {
?
? ? ? ? ? ? ? ? values[offset + 3] = (byte)((src[i] >> 24) & 0xFF);
? ? ? ? ? ? ? ? values[offset + 2] = (byte)((src[i] >> 16) & 0xFF);
? ? ? ? ? ? ? ? values[offset + 1] = (byte)((src[i] >> 8) & 0xFF);
? ? ? ? ? ? ? ? values[offset] = (byte)(src[i] & 0xFF);
? ? ? ? ? ? ? ? offset += 4;
? ? ? ? ? ? }
? ? ? ? ? ? return values;
? ? ? ? }
? ? ? ? #endregion字節(jié)數(shù)組與Object
? ? ? ? #region ObjectToBytes【函數(shù)】將一個(gè)object對象序列化,返回一個(gè)byte[] ? ??
? ? ? ? /// <summary>?
? ? ? ? /// 【函數(shù)】將一個(gè)object對象序列化,返回一個(gè)byte[] ? ? ? ??
? ? ? ? /// </summary>?
? ? ? ? /// <param name="obj">能序列化的對象</param> ? ? ? ??
? ? ? ? /// <returns></returns>?
? ? ? ? public static byte[] ObjectToBytes(object obj)
? ? ? ? {
? ? ? ? ? ? using (MemoryStream ms = new MemoryStream())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? IFormatter formatter = new BinaryFormatter();
? ? ? ? ? ? ? ? formatter.Serialize(ms, obj);
? ? ? ? ? ? ? ? return ms.GetBuffer();
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? #endregion
?
? ? ? ? #region BytesToObject【函數(shù)】將一個(gè)序列化后的byte[]數(shù)組還原 ??
? ? ? ? /// <summary>?
? ? ? ? /// 【函數(shù)】將一個(gè)序列化后的byte[]數(shù)組還原 ? ? ? ??
? ? ? ? /// </summary>
? ? ? ? /// <param name="Bytes"></param> ? ? ? ??
? ? ? ? /// <returns></returns>?
? ? ? ? public static object BytesToObject(byte[] Bytes)
? ? ? ? {
? ? ? ? ? ? using (MemoryStream ms = new MemoryStream(Bytes))
? ? ? ? ? ? {
? ? ? ? ? ? ? ? IFormatter formatter = new BinaryFormatter();
? ? ? ? ? ? ? ? return formatter.Deserialize(ms);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? #endregion總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- C#使用Enum.TryParse()實(shí)現(xiàn)枚舉安全轉(zhuǎn)換
- c#中(int)、int.Parse()、int.TryParse、Convert.ToInt32的區(qū)別詳解
- C#(int)中Convert、Parse、TryParse的區(qū)別
- C#中對象與JSON字符串互相轉(zhuǎn)換的三種方式
- c#?如何將字符串轉(zhuǎn)換為大寫或小寫
- C#中字符串與字節(jié)數(shù)組的轉(zhuǎn)換方式
- C#日期格式字符串的相互轉(zhuǎn)換操作實(shí)例分析
- C# 字符串、數(shù)組和List的截取和轉(zhuǎn)換實(shí)例
- C#實(shí)現(xiàn)char字符數(shù)組與字符串相互轉(zhuǎn)換的方法
- C# 中 TryParse如何將字符串轉(zhuǎn)換為特定類型
相關(guān)文章
C#請求唯一性校驗(yàn)支持高并發(fā)的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于C#請求唯一性校驗(yàn)支持高并發(fā)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
C#?wpf使用DockPanel實(shí)現(xiàn)制作截屏框
做桌面客戶端的時(shí)候有時(shí)需要實(shí)現(xiàn)截屏功能,能夠在界面上框選截屏,本文就來為大家介紹一下wpf如何使用DockPanel制作截屏框吧,感興趣的可以了解下2023-09-09
基于C#設(shè)計(jì)一個(gè)帶導(dǎo)航菜單的主界面
這篇文章主要為大家詳細(xì)介紹了如何基于C#設(shè)計(jì)一個(gè)帶導(dǎo)航菜單的主界面,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
c#調(diào)用c++的DLL的實(shí)現(xiàn)方法
本文主要介紹了c#調(diào)用c++的DLL的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
Unity ScrollView實(shí)現(xiàn)動態(tài)列表生成
這篇文章主要為大家詳細(xì)介紹了Unity ScrollView實(shí)現(xiàn)動態(tài)列表生成,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04

