2015-06-11 73 views
0

如果我想使用字符串來表示十六進制值,是否有辦法在它們之間進行按位與,按位或等操作?c#操作字符串作爲十六進制代碼?

我知道有類型可以處理,但我需要把它們保持爲字符串。

+1

字符串值之間的邏輯與/或你可以在條件/'bool'操作數上使用邏輯運算符,你是指按位與/或?你不能在字符串上使用它們。 – Habib

+0

什麼是*十六進制代碼*? *十六進制*值?您可以使用*整數類型*(例如'UInt16')進行邏輯運算,同時將它們轉換爲'string'以向用戶顯示十六進制值。因此,將'string'轉換爲整數,操作和轉換回字符串應該做的伎倆,但它是有意義的,保持它們爲整數。 – Sinatr

+0

我改正了我的問題,對不起,不好的選擇 – Cher

回答

1

我不知道這樣的類型。

我通常使用以下方法:

 //check if string is in hex format. 
    bool OnlyHexInString(string text) 
    { 
     for (var i = 0; i < text.Length; i++) 
     { 
      var current = text[i]; 
      if (!(Char.IsDigit(current) || (current >= 'a' && current <= 'f'))) 
      { 
       return false; 
      } 
     } 
     return true; 
    } 

從十六進制字符串轉換成int都是在這裏完成:

public string HexToInt(string hexString) 
    { 
     hexString = hexString.Trim(); 
     hexString = hexString.ToLower(); 
     if (hexString.Contains("0x")) 
      hexString = Regex.Replace(hexString, "0x", ""); 

     if (OnlyHexInString(hexString)) 
      return System.Convert.ToInt64(hexString, 16).ToString(); 
     else 
      return ""; 
    } 

編輯1 我忘了加上Int64.Parse()上如果結果不爲空或空的結果。對不起。

執行你的行動和取得的結果返回到十六進制字符串:

public string IntToToHex(string integerAsAString) 
    { 
     if (!string.IsNullOrEmpty(integerAsAString)) 
     { 
      Int64 integerValue = 0; 

      bool parsed = Int64.TryParse(integerAsAString, out integerValue); 

      if (parsed) 
       return integerValue.ToString("X"); 

      else 
       throw new Exception(string.Format("Couldn't parse {0} hex string!", integerAsAString)); 
     } 
     else 
      throw new Exception(string.Format("Couldn't parse {0} hex string!", integerAsAString)); 
    } 
相關問題