我想將可變大小的int32類型的值轉換爲具有最小長度和0填充的十六進制字符串。將任何值轉換爲可變長度的十六進制
實施例:434 = 01 B2
有幾種C#的方法,但它們都具有固定的大小,取決於值的類型,(實施例:的Int32將始終給出一個4個字節值像00 00 00 01數字1)。
可以編寫一個代碼來完成它,但我認爲有一個更短的方法。
感謝
samtal
我想將可變大小的int32類型的值轉換爲具有最小長度和0填充的十六進制字符串。將任何值轉換爲可變長度的十六進制
實施例:434 = 01 B2
有幾種C#的方法,但它們都具有固定的大小,取決於值的類型,(實施例:的Int32將始終給出一個4個字節值像00 00 00 01數字1)。
可以編寫一個代碼來完成它,但我認爲有一個更短的方法。
感謝
samtal
int x = 434; string s = x.ToString("X").PadLeft(5,'0');
這將產生,001B2
好,INT3ὰ的答案是接近的,只是需要進一步的偶數處理:
int x = 434;
string s = x.ToString("X");
s = s.Length % 2 == 0 ? s : "0" + s;
關於空格問題,我沒搞清楚一個非常簡單的方法,但是,你可以看看this
感謝WAKU爲s = s.Length%2 == 0的缺失部分? s:「0」+ s; 我解決了字節迭代和雙填充的空間(或任何字符)如下: (不是真的乾淨,但工作)
int i; string d;
long x = 258458685;
string s = x.ToString("X");
s = s.Length % 2 == 0 ? s : "0" + s;
for (i = 0; i < s.Length ; i = i + 2)
{
d = s.Substring(i ,2);
Console.Write(d.PadLeft(2, '0').PadLeft(3,' '));
}
結果:0F 67 C4 3D
是在必要的十六進制字符串的空間? – WAKU
空間不是功能上需要的,但它們使其更易於調試和維護。 如果它有所作爲,可以省略。 – samtal