1. 程式人生 > 程式設計 >C# 用什麼方法將BitConverter.ToString產生字串再轉換回去

C# 用什麼方法將BitConverter.ToString產生字串再轉換回去

本文介紹了C# 用什麼方法將BitConverter.ToString產生字串再轉換回去,分享給大家,具體如下:

byte[]  bytTemp  =  System.Text.Encoding.Default.GetBytes("String");  
  string  str  =  System.BitConverter.ToString(bytTemp);  
  Console.WriteLine(str);  
  
  string[]  strSplit  =  str.Split('-');  
  byte[]  bytTemp2  =  new  byte[strSplit.Length];  
  for  (int  i  =  0;  i  <  strSplit.Length;  i++)  
      bytTemp2[i]  =  byte.Parse(strSplit[i],System.Globalization.NumberStyles.AllowHexSpecifier);  
  string  str2  =  System.Text.Encoding.Default.GetString(bytTemp2);  
  Console.WriteLine(str2);

c#bitconverter.ToString轉換為十六進位制字串

我使用 BitConverter.ToString(bytes)將字串轉換為十六進位制字串,我將其進一步轉換為整數或浮點數。

但是輸入流由0組成,表明位元組值為0.所以假設我有一個整數,它由2個位元組的輸入表示,從位置x開始,第一個由 EE 組成,而第二個位元組為 00 。現在當我使用 BitConverter.ToString(bytes,x,2).Replace( - ”,”)時,輸出為 EE00 ,其整數值為 60928 ,但在這種情況下,輸出應該是 238 位元組 EE 為整數。

但在其他情況下,2個位元組可能是 EE01 ,其整數值 60929 在這種情況下是正確的。

任何建議如何解決我的問題?

由於有人說這個問題令人困惑,我會重申我的問題我有很長的十六進位制字串作為輸入。在十六進位制字串中,

1)前12個位元組表示字串。
2)接下來的11個位元組也代表了其他一些字串。
3)接下來1個位元組表示整數。
4)接下來的3個位元組表示整數。
5)接下來的4個位元組表示整數。
6)接下來的4個位元組表示浮點數。
7)接下來的7個位元組表示字串。
8)接下來的5個位元組表示整數。

因此,對於第4種情況,如果位元組是ee 00 00,那麼我應該忽略0並將ee轉換為整數。但是如果它是ee 00 ee,那麼我應該將ee00ee轉換為整數。我每次都會遵循上面提到的相同模式。

我的問題已解決。我正在犯Endianness的錯誤。我收到的資料是EE 00,在轉換為整數之前,我應該將它作為00 EE。感謝所有為我提供解決方案的人,並抱歉錯過了這個重要的問題。

PS:C# 使用BitConverter.ToString(byte[] value)轉換後字串帶有橫槓“-”,去掉橫槓方法

使用BitConverter.ToString(byte[] value).Replace("-",""),可去掉橫槓

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。