我有一串字符,但我想要一個十六進制字符的字符串,通過將原始字符轉換爲整數,然後將這些整數轉換爲十六進制字符來轉換十六進制字符。我怎麼做?將字符串轉換爲十六進制字符串的C#方法是什麼?
這是我做到了在VB:
for i = 1 to len(str)
hex_str = hex_str + lcase(cstr(hex(asc(mid(str, i, 1)))))
next
現在,在C#這樣做最地道的方式是什麼?
我有一串字符,但我想要一個十六進制字符的字符串,通過將原始字符轉換爲整數,然後將這些整數轉換爲十六進制字符來轉換十六進制字符。我怎麼做?將字符串轉換爲十六進制字符串的C#方法是什麼?
這是我做到了在VB:
for i = 1 to len(str)
hex_str = hex_str + lcase(cstr(hex(asc(mid(str, i, 1)))))
next
現在,在C#這樣做最地道的方式是什麼?
我不是一個VB.NET開發人員,但有一個轉換器,我有這樣的:
for (i = 1; (i <= str.Length); i++) {
hex_str = (hex_str + hex(asc(str.Substring((i - 1), 1))).ToString().ToLower());
}
我不知道你使用了什麼轉換器,但什麼是'十六進制'和'asc'?這不會編譯。 –
@TomWijsman它們是VB中的內置函數。 –
這是因爲HEX和ASC是C#中沒有模擬功能的內置函數 - 轉換器可能只是內聯了這些函數。它實際上是取一個字符串,得到整數ascii碼,然後通過它的外觀返回該整數的十六進制碼。 – dash
試試這個:
for (var i = 1; i <= str.Length; i++)
{
hex_str = hex_str + Convert.ToString(Convert.ToString(Convert.ToInt32(str[i - 1]), 16).ToUpper()).ToLower();
}
我認爲那裏有太多的轉換。 :d –
在C#中最簡單的方法我能想出是:
var hexStr = str.ToCharArray()
.Aggregate("", (current, c)
=> current + Convert.ToInt32(c).ToString("X"));
該第一線匝串入型char[]
,第二和第三線轉換的字符數組每個字符變成一個整數Int32
,然後轉換爲String
類型的十六進制字符。該十六進制字符通過aggregate function添加到類型String
的hexStr
。
這裏在上面的表達式中使用的功能:
Enumerable.Aggregate;從System.Linq的,所以你可能需要添加using System.LINQ;
Int32.ToString(String format),通過"X"
,使得結果的十六進制,而不是小數。
對於聚集,我使用了一個lambda expression(parameters => return value
)。這是一個功能,需要current
和c
和return current + Convert.ToInt32(c).ToString("X");
如果有什麼不清楚的地方,請隨時在下面的評論中提問。
請使用類似http://converter.telerik.com/ – msarchet
嘗試與該轉換器http://www.developerfusion.com/tools/convert/vb-to-csharp/ –
@JonathanAllen,不,這是不是無用的問題。在提問時,OP通常應該提供一些解決問題的嘗試。如果他不這樣,他不應該在這裏問。他可能應該聘請一名C#開發人員爲他完成這項工作。 SO不是外包公司。所以我重複我的問題到OP:你有什麼嘗試:http://mattgemmell.com/2008/12/08/what-have-you-tried/ –