日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2023/12/4 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何做到 byte[] 和 十六进制 互转? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

咨詢區

  • alextansc

請問我如何實現將 byte[] 和 十六進制的string 進行互轉?

回答區

  • balrob

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

// //?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 命名空間下有一個可以實現 byte[] 到 hex 之間的轉換方法,我覺得可以滿足你的需求,參考如下:

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

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

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

但用它性能會比較慢,所以基于它我做了一個版本優化,性能是它的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); }

點評區

沒想到 .NET5 中已經有了 FromHexString,ToHexString 方法, Convert 類越來越強大了,工作效率看樣子又可以提高了。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。