2013-04-10 61 views
0

如何減少或改善代碼?C#提高代碼的幫助 - int爲十六進制

private readonly StringBuilder _buffer = new StringBuilder(); 

public void WriteD(int i) { 
    _buffer.Append(Encoding.UTF8.GetString(BitConverter.GetBytes(i))); 
} 

我需要寫入一些數據類型(int,ushort,string等)的字符串二進制數據。 字符串應該看起來像轉換後的「stringToHex」如下(put int 13和10): 0D 00 00 00 0A 00 00 00

謝謝!

+1

根據您的問題,請更新您的冠軍。http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-標題順便說一句,你到目前爲止嘗試過什麼? – 2013-04-10 14:29:55

+0

我需要添加到字符串是二進制數據,而不是十六進制。我的代碼正常工作,但我認爲他很醜。 – user2264990 2013-04-10 14:40:42

+0

需要添加到字符串4個字節的int,2個字節ushort等 – user2264990 2013-04-10 14:42:44

回答

1
public void WriteD(int i) { 
    _buffer.Append(i.ToString("X4")); 
} 
+0

這將導致'000D000A'。它需要'X8',然後反轉字節對。 – 2013-04-10 14:35:53

1

您可以使用BitConverter.ToString(BitConverter.GetBytes(i));

+0

謝謝,但此解決方案返回:C(11):0D-00-00-00(30 44 2D 30 30 2D 30 30 2D 30 30)而不是C(4):*(0D 00 00 00)。也就是說,返回一個字符串而不是二進制 – user2264990 2013-04-10 14:36:50

+0

我需要向字符串中添加二進制數據,而不是十六進制。我的代碼正常工作,但我認爲他很醜。 – user2264990 2013-04-10 14:41:02