日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

如何做到 byte[] 和 十六进制 互转?

發(fā)布時(shí)間:2023/12/4 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何做到 byte[] 和 十六进制 互转? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

咨詢區(qū)

  • alextansc

請(qǐng)問我如何實(shí)現(xiàn)將 byte[] 和 十六進(jìn)制的string 進(jìn)行互轉(zhuǎn)?

回答區(qū)

  • balrob

如果你的程序是基于 .NET5 的,可以使用 Convert 下新增的兩個(gè)方法 ToHexString 和 FromHexString ,參考下面兩個(gè)方法的定義。

// //?Summary: //?????Converts?an?array?of?8-bit?unsigned?integers?to?its?equivalent?string?representation //?????that?is?encoded?with?uppercase?hex?characters. // //?Parameters: //???inArray: //?????An?array?of?8-bit?unsigned?integers. // //?Returns: //?????The?string?representation?in?hex?of?the?elements?in?inArray. // //?Exceptions: //???T:System.ArgumentNullException: //?????inArray?is?null. // //???T:System.ArgumentOutOfRangeException: //?????inArray?is?too?large?to?be?encoded. public?static?string?ToHexString(byte[]?inArray);// //?Summary: //?????Converts?the?specified?string,?which?encodes?binary?data?as?hex?characters,?to //?????an?equivalent?8-bit?unsigned?integer?array. // //?Parameters: //???s: //?????The?string?to?convert. // //?Returns: //?????An?array?of?8-bit?unsigned?integers?that?is?equivalent?to?s. // //?Exceptions: //???T:System.ArgumentNullException: //?????s?is?null. // //???T:System.FormatException: //?????The?length?of?s,?is?not?zero?or?a?multiple?of?2. // //???T:System.FormatException: //?????The?format?of?s?is?invalid.?s?contains?a?non-hex?character. public?static?byte[]?FromHexString(string?s);
  • Mykroft

在 W3cXsd2001 命名空間下有一個(gè)可以實(shí)現(xiàn) byte[] 到 hex 之間的轉(zhuǎn)換方法,我覺得可以滿足你的需求,參考如下:

using?System.Runtime.Remoting.Metadata.W3cXsd2001;public?static?byte[]?GetStringToBytes(string?value) {SoapHexBinary?shb?=?SoapHexBinary.Parse(value);return?shb.Value; }public?static?string?GetBytesToString(byte[]?value) {SoapHexBinary?shb?=?new?SoapHexBinary(value);return?shb.ToString(); }
  • Waleed Eissa

我最近剛好也遇到了這個(gè)問題,我是這么解決的。

byte[]?bytes?=?{0,?1,?2,?4,?8,?16,?32,?64,?128,?256} Console.WriteLine(?BitConverter.ToString(bytes));

但用它性能會(huì)比較慢,所以基于它我做了一個(gè)版本優(yōu)化,性能是它的8倍以上,參考如下:

private?static?string?ByteArrayToHex(byte[]?barray) {char[]?c?=?new?char[barray.Length?*?2];byte?b;for?(int?i?=?0;?i?<?barray.Length;?++i){b?=?((byte)(barray[i]?>>?4));c[i?*?2]?=?(char)(b?>?9???b?+?0x37?:?b?+?0x30);b?=?((byte)(barray[i]?&?0xF));c[i?*?2?+?1]?=?(char)(b?>?9???b?+?0x37?:?b?+?0x30);}return?new?string(c); }

點(diǎn)評(píng)區(qū)

沒想到 .NET5 中已經(jīng)有了 FromHexString,ToHexString 方法, Convert 類越來(lái)越強(qiáng)大了,工作效率看樣子又可以提高了。

總結(jié)

以上是生活随笔為你收集整理的如何做到 byte[] 和 十六进制 互转?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。