2010-10-17 109 views
0

我知道如何將十六進制轉換爲整數,當我只有一個十六進制字符。但我得到一串兩個字符。十六進制整數

我都轉換字符爲十六進制:

String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString())) 

這樣的話可以說我有01和3F爲我的兩個長度的字符。我應該如何將這些轉換爲整數?我試圖做

int length = int.Parse("013f", System.Globalization.NumberStyles.AllowHexSpecifier); 

但顯然這是不正確的。我甚至採取了這兩個值,Concat'd他們在一起,然後試圖解析他們..顯然是不對的

我做錯了什麼試圖解析這兩個十六進制到一個長度,或者是服務器即時通訊使用非標準長度系統獲取信息。因爲當第一個字符是00時,我可以得到正確的長度,如0001或其他。即時通訊只是不確定當我有兩個長度的字符。

編輯:一些試驗和錯誤後,預期值是491

更新二:

基本上服務器爲我提供了兩個字符的長字符串,它告訴你的長度的以下數據。

這個特定屬性的兩個字符是01和3f。以下數據長度爲491個字符,據我所知,與013f無關,但我知道有一個地方,因爲另一個應用程序正在使用這個完全相同的數據,但出來的是正確的結果。

+0

你的長度是多少? – 2010-10-17 23:12:30

+0

是什麼讓你認爲這段代碼不正確?它返回319,這是0x013f的十進制表示形式 – 2010-10-17 23:44:03

+0

您能爲我們提供更多數據嗎?或者,** 1)**隱藏到十六進制,** 2)**交換最後兩位數,** 3)**添加100 – Pedery 2010-10-18 02:23:30

回答

3

這個問題不是很清楚。

十六進制值0x013F是十進制的319。您的代碼正確地評估這一點,但我會用NumberStyles.HexNumber而不是NumberStyles.AllowHexSpecifier

int length = int.Parse("013f", NumberStyles.HexNumber); 

你在期待0x013F數轉換爲?

+0

也可以使用Convert.ToInt32()方法:http://msdn.microsoft.com/en-us/library/1k20k614.aspx – 2010-10-17 23:11:29

+1

這就是即時通訊做的,這是與319出來我認爲哪些不是我需要的長度。 – caesay 2010-10-17 23:14:33

+1

319是正確的,不是嗎? – 2010-10-17 23:17:21