2016-12-12 63 views
-2

我需要將stringhexadecimal code保存爲int將int的十六進制代碼打印到字符串中

例如int 15hexadecimal值爲xoooF

我的問題是,我必須將這段代碼保存在string這樣的:

int myint = myStringLength; //this value might change 
string myIntExhCode = myint.convertThisIntoMyCode(); 

//and the string has to be exactly "/xoooF" 

所以在這個問題上我有兩個problmes:

  • 首先是如何自動轉換一個int進入hexadecimal代碼像15 = xoooF

  • 第二個是如何創建一個包含\xoooF的字符串,因爲任何連接這樣的字符串的嘗試都會導致\\xoooF,這是不正確的,因爲在輸出中我需要將string轉換爲ascii code

我該如何實現這兩項任務?

任何幫助將不勝感激

+0

'000F == 15.ToString( 「X4」)' –

+1

你想'o's或'0's?因爲'15'的十六進制值是'000F',而不是'oooF'。 –

+1

你的意思是正斜槓還是反斜槓?您似乎很可能意味着反斜槓而不是正斜槓 - 在這種情況下,調試器將顯示一個反斜槓,並用另一個反斜槓轉義,使其看起來像是兩個反斜槓。但它實際上只是一個反斜槓。 –

回答

2

你的問題如何是相當模糊的。如果你想十六進制格式,但0(數字零)變成o(小拉丁字母o)就可以實現,比方說,一個擴展方法(爲了保持你的建議代碼不變):

public static partial class IntExtensions { 
    public static string convertThisIntoMyCode(this int value) { 
    return "\\x" + value.ToString("X4").Replace('0', 'o'); // or "/x" + ... 
    } 
} 

...

int myint = myStringLength; //this value might change 
string myIntExhCode = myint.convertThisIntoMyCode(); 

// Test output 
Console.Write(myIntExhCode); 
+0

也許你應該處理這種情況你是否在擴展方法中使用了「partial class」? –

+0

@Jeppe Stig Nielsen:我經常使用'partial class'作爲擴展方法esp。在*流行*類型(如'int')時,我們可能預期會有/將會是另一組擴展 –

+0

這很有趣。當需要另一組擴展時,您也可以簡單地爲它們創建一個單獨的(非部分)類。我看到沒有問題。如果需要,用於擴展「int」的不同類可以位於不同的名稱空間中。如果你想要相同的命名空間,你只需使用不同的類名。 –

1

int i = 15; 
string result = "\\x" + i.ToString("X").PadLeft(4, 'o'); 
+0

我試過''/ x + string'公式,但是出來的結果是''// xooF「'。有沒有辦法從字符串中刪除double/ –

+0

我非常懷疑它出來了作爲'// xooF',因爲正斜槓根本就沒有被轉義。我懷疑正斜槓是什麼需要,儘管... –

+0

@JonSkeet我的錯我剛剛複製_the字符串必須完全是「/ xoooF」_從OP – fubo

相關問題