2009-09-15 147 views
2

如何將字節數組轉換爲字符串?我需要獲取原始內容,例如「96 = A8 = FC- = A8 = FE」,但是當我使用Encoding.UTF8.GetString(bytes)時,它返回「96 - 」。謝謝!將byte []轉換爲字符串

+5

真的沒有這等作爲字符串無編碼: http://www.joelonsoftware.com/articles/Unicode.html 記住ASCII仍是一個編碼! – stusmith 2009-09-15 14:44:53

+0

你是對的stushmith!沒有「無編碼」這樣的東西..我的壞.. – 2009-09-16 21:53:50

回答

10

我想你誤解了字符串的內容。最接近「原始內容」的是使用Encoding.Unicode - .NET在內部使用UTF-16,因此轉換爲UTF-16實際上只是將內存內容從字符串複製到字節數組的情況。

現在,回到你的問題,你有什麼數據,什麼是代表,爲什麼?文本數據是字符。二進制數據基本上是數字。你有有兩個之間的映射,這就是編碼。

我有一個article on Unicode它可以幫助你,但我強烈懷疑你需要退後一步,然後才能取得任何進展。

如果您嘗試將字節數組轉換爲以十六進制表示的字節字符串,則可以使用BitConverter.ToString(byte[]),但我不會將其描述爲「原始」轉換。

編輯:好的,現在我們有上下文,它更容易回答。你在看什麼是quoted printable編碼。電子郵件應該指定引用的可打印的編碼,所以當你解碼QP編碼時,這就是你應該使用的。如果您目前沒有存儲原始郵件的內容編碼,你應該開始所以現在在做什麼?

+0

我認爲你是對的,請他退後一步,重新考慮這個問題。不過,我最好的猜測是,他期望這些編碼的十六進制值能夠轉化爲可在他的機器上查看的字符。如果是這樣,也許他需要從一些本地代碼頁映射到Unicode。 – 2009-09-15 14:49:29

+1

這只是編碼。默認情況下,如果這真的是他期望的:) – 2009-09-15 15:03:17

+0

我需要做的是解析電子郵件的內容。在解析之前,我們保存數據庫中的內容。該列在byte []中返回給我。我的主要問題是電子郵件包含分數,例如「96⅜-⅞」。小數部分被轉換爲十六進制,但其餘的消息是相同的。我已經有了一個代碼來處理轉換(使用正則表達式),但我不知道如何從返回的字段中獲取「96 = A8 = FC- = A8 = FE」,它位於byte []中。 也許我解決這個問題的方法並不令人滿意。任何建議,將不勝感激。謝謝! – 2009-09-15 15:10:46

1

您可能想要使用ASCII編碼,而不是UTF8。

0

您還可以使用Convert.ToBase64CharArray方法

http://msdn.microsoft.com/en-us/library/system.convert.tobase64chararray(VS.80).aspx

Convert.ToBase64CharArray (字節[],的Int32,的Int32,CHAR [],Int32)將

一個8位的無符號整數 陣列的一個子集轉換爲Unicode字符陣列的等效子集 編碼 ,基數爲64位。參數 指定子集作爲 輸入和輸出數組中的偏移量,並將輸入數組 中的元素數量 進行轉換。