Byte數組轉換成string 的方法積累

.net的加密算法,返回的都是byte[] 類型,在存貯起來讓人非常頭疼,最簡單的方法就是把byte[]轉換成string來存貯,當然如果數據量大的話,另當別論。

所以我就把byte[]轉換成string的方法做一個簡單的積累與分析。目前有3種我覺得比較簡單的方案來進行轉化。

1.Convert.ToBase64String與 Convert.FromBase64String

此方法簡單實用。轉換成的string包含:26個英文字母的大小寫、+、/、0~9的數字,總共64個字符。一般會在結尾出現“=”。分析其原因很簡單。

原理:用64個字符來描述6bit的二進制。

方式:把byte數據連在一起,以6bit為單位進行分組,使用64個字符描述6bit數據,如果分組不足6bit,使用“=”補全。

?

2.自己寫代碼,使用16進制字符0~9、A~F來描述數據。

原理:使用16個字符來描述4bit的二進制。也就是說,一個byte要使用兩個16進制字符來進行描述。

方式:對每一byte的前半部分與后半部分分別用字符來描述。

此方法需要自己手動進行書寫,代碼相當簡單。可以Crtl+c Ctrl+v拿來就用。

 public static string ByteToString(byte[] bytes)
{
StringBuilder strBuilder = new StringBuilder();
foreach (byte bt in bytes)
{
strBuilder.AppendFormat("{0:X2}", bt);
}
return strBuilder.ToString();
}
public static byte[] StringToByte(string str)
{
byte[] bytes = new byte[str.Length / 2];
for (int i = 0; i < str.Length / 2; i++)
{
int btvalue = Convert.ToInt32(str.Substring(i * 2, 2), 16);
bytes[i] = (byte)btvalue;
}
return bytes;
}

3.使用Encoding的編碼自動轉化Encoding.GetEncoding("編碼格式").GetString()和?? Encoding.GetEncoding("編碼格式").GetBytes()

原理:使用編輯規則強行轉換。

方式:使用編輯自身的編碼方式進行轉換,轉換出來的byte數據或者是string會出現各種奇怪或者是不可見的字符,存貯起來非常不方便。

?

?


總結:

推薦使用第一種方法來進行string的轉化,但如果對格式要求時,如自定義機器語言中,不允許出現“+”“/”這種字符時,考慮會用第二種方法。

如果只是轉換成byte數據或者是轉換成string進行內存操作時,使用第三種方式是種不錯的選擇。


轉載于:https://www.cnblogs.com/taofh/archive/2010/07/27/1786224.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275978.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275978.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275978.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

加快信息化建設對地方發展的_加快設計師職業發展的9種方法

加快信息化建設對地方發展的重點 (Top highlight)Over the past few months, I have had an increase in conversations with design students from various institutions, as well as early, to senior-level designers, researchers, & product managers from various co…

Docker:Nginx-Redis-Mysql-PHP 部署

Docker:Nginx-Redis-Mysql-PHP 部署 網絡橋接 Docker容器之間默認網絡隔離&#xff0c;需要使用橋接網絡進行互通 創建網絡 docker network create net-local docker network ls NETWORK ID NAME DRIVER SCOPE da9c8fc3dc80 bridge bridge local 78641…

epoll監聽文件_介紹一下 Android Handler 中的 epoll 機制?

介紹一下 Android Handler 中的 epoll 機制&#xff1f;目錄&#xff1a;IO 多路復用select、poll、epoll 對比epoll APIepoll 使用示例Handler 中的 epoll 源碼分析IO 多路復用IO 多路復用是一種同步 IO 模型&#xff0c;實現一個線程可以監視多個文件句柄。一旦某個文件句柄就…

前端工程師的一大神器——puppeteer

大家好&#xff0c;我是若川。歡迎加我微信 ruochuan12&#xff0c;長期交流學習。今天推薦神器puppeteer&#xff0c;我猜有挺多人不知道。文章不長&#xff0c;看完有空也可以試玩。我18年也寫過一篇puppeteer爬取生成pdf的文章&#xff0c;時間真快。前端使用puppeteer 爬蟲…

selenium界面元素定位

一、 Selenium界面元素定位 本文元素定位以das2為例 #導入包 from selenium import webdriver #打開火狐驅動 driverwebdriver.Firefox() #訪問網址 driver.get("http://192.168.3.217:8080/das/seatlogin.jsp ") 進行web頁面自動化測試&#xff0c;對頁面上…

vue.js ui_UI / UX開發:考慮Vue.js

vue.js uiBecause sometimes we have to add logic to our concepts, and Vue makes it a whole lot easier.因為有時我們必須在概念中添加邏輯&#xff0c;而Vue使其變得更加容易。 FULL DISCLOSURE: THIS IS NOT A COMPLETE JAVASCRIPT OR VUE COURSE. There’s no way I co…

Silverlight學習筆記十七BingMap(三)之地圖的地區標識

如果我們需要在Bing Maps中加入一個小圖釘標記&#xff0c;該如何實現了&#xff1f; Bing Maps控件已經為我們提供了這個功能&#xff0c;在Microsoft.Maps.MapControl名稱空間下提供了實現圖釘應用的圖釘層Pushpin類用該類來實現普通標識 在Xaml中添加<map:Pushpin Locati…

win10查看pcie設備_壹拓網科技解密WIN10系統使用向日葵開機棒遠程開機需要設置幾個地方...

向日葵開機棒&#xff0c;是一款非常好用的遠程智能遠程開機硬件&#xff0c;它一頭接網線&#xff0c;另外一頭和被開電腦接在同一個路由器下&#xff0c;不需要和被開電腦或者設備直接連接&#xff0c;當然&#xff0c;被開電腦需要有線聯網&#xff0c;暫時不支持使用無線方…

如何成為公司獨當一面的工程師

大家好&#xff0c;我是若川。歡迎加我微信 ruochuan12&#xff0c;長期交流學習。今天推薦黃老師的這篇文章&#xff0c;你可能看到過了&#xff0c;但值得再看一遍。之前常有小伙伴問&#xff0c;大多情況下我都會分享這篇文章。點擊下方卡片關注我、加個星標&#xff0c;或者…

webpack4.0配置記錄(2)

接上一篇webpack4.0配置記錄(1),繼續記錄學習webpack配置。 定義環境變量 new Webpack.DefinePlugin({//用來定義全局環境變量DEV:JSON.stringify(dev),FLAG:true }), webpack簡單優化 noParsemodule:{noParse:/jquery/,//不去解析設置的包所依賴的關系,如jquery } ignorePlugi…

flex如何做響應式設計_響應式設計-您做錯了!

flex如何做響應式設計Responsive design is not just about the web that automatically adjusts to different screen resolutions and resizeable images, but designs that are crucial for web performance.自適應設計不僅涉及可自動適應不同屏幕分辨率和可調整大小圖像的網…

怎么查看和獲取SQL Server實例名

查看實例名時可用 1、服務—SQL Server(實例名)&#xff0c;默認實例為(MSSQLSERVER) 或在連接企業管理時-查看本地實例 2、通過注冊表 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SQL Server/InstalledInstance 3、用命令 sqlcmd/osql sqlcmd -L sqlcmd -Lc osql -L 獲…

30萬手表推薦_今年六十歲生日,兒子說要送只30萬的手表,請問有哪些推薦?...

關注腕表部落&#xff0c;盡享腕表生活一位讀者向筆者提出這樣一個問題&#xff1a;今年六十歲生日&#xff0c;兒子說要送只30萬的手表&#xff0c;請問有哪些推薦&#xff1f;首先要恭喜這位老爺子&#xff0c;一來是生日馬上就要到了&#xff0c;二來是還有這么孝順而且慷慨…

關注博客

https://blog.51cto.com/oldboyhttps://blog.51cto.com/yw666轉載于:https://blog.51cto.com/11732716/2348556

寫 Node.js 代碼,從學會調試開始

大家好&#xff0c;我是若川&#xff08;點這里加我微信 ruochuan12&#xff0c;長期交流學習&#xff09;。今天推薦這篇調試文章&#xff0c;熟悉我的讀者都知道我寫的源碼文章都多次強調要調試&#xff0c;而且寫了調試方法。點擊下方卡片關注我、加個星標&#xff0c;或者查…

創建用戶友好的表單

Forms are a common way to engage with users and could be a user’s first impression of your product. Since forms aren’t always the user’s favourite thing, it is essential to make filling out forms as easy as possible. Let’s go over a few tips for creati…

細節決定成敗—關于.net的.dll.refresh文件

一直在做.net的項目&#xff0c;c/s的、b/s的&#xff0c;一直沒有注意這個東西。眾所周知&#xff0c;.net的程序生成后會在bin目錄下生成.dll文件&#xff0c;而.dll.refresh這個文件從何而來呢&#xff1f;那天無聊地google了下才知&#xff0c;這個東東是在你的項目中引用第…

環境在c盤_如何給女朋友解釋為什么 Windows 上面的軟件都把自己安裝在 C 盤

本文經授權轉載自漫畫編程(ID&#xff1a;mhcoding)周末&#xff0c;我在家里面看電視&#xff0c;女朋友正在旁邊鼓搗她的電腦&#xff0c;但是好像并不是很順利&#xff0c;于是就有了以下對話。計算機存儲我們使用的計算機中&#xff0c;保存信息的介質有兩類&#xff1a;一…

能讓你縱享絲滑的SSR技術,轉轉這樣實踐

大家好&#xff0c;我是若川&#xff08;點這里加我微信 ruochuan12&#xff0c;長期交流學習&#xff09;。今天推薦這篇圖文并茂的SSR技術文章。這是江西前端群里一個小伙伴的文章。群里小伙伴很多都在知名大廠&#xff0c;但他們都很低調。點擊下方卡片關注我、加個星標&…

魅族魅藍mirror簡單打開usb調試模式的步驟

經常我們使用安卓手機鏈接電腦的時候&#xff0c;或者使用的有些應用比如我們企業營銷團隊經常使用的應用引號精靈&#xff0c;以前使用的老版本就需要開啟USB調試模式下使用&#xff0c;現經常新版本不需要了&#xff0c;如果手機沒有開啟USB調試模式&#xff0c;電腦則無辦法…