簡體   English   中英

將int32轉換為以16為底的字符串

[英]Convert int32 to string in base 16

我目前正在嘗試將.NET JSON編碼器轉換為NETMF,但是遇到Convert.ToString()的問題,因為NETMF中沒有這樣的東西。

編碼器的原始行如下所示:

Convert.ToString(codepoint, 16);

在查看Convert.ToString(Int32, Int32)的文檔后Convert.ToString(Int32, Int32)它說這是通過將int作為第一個參數,並將基數作為第二個參數將int32轉換為int int32或16。

如何執行此操作的底層代碼是什么?或者我將如何執行此操作?

從代碼中可以看到,我只需要從Int32轉換為Int16

編輯

嗯,編碼器也想這樣做:

PadLeft(4, '0');

在字符串上,這只是在字符串的開頭加上4'0'+'0'+'0'+'0'嗎?

如果您想將32位整數值更改為以十六進制顯示值的字符串:

string hex = intValue.ToString("x");

有關變化,請參見堆棧溢出問題。 在.NET中將數字轉換為十六進制值

免責聲明:我不確定NETMF中是否存在此功能,但它是如此基礎,以至於我認為應該如此。

以下是一些將整數轉換為十六進制(以16為底)的示例代碼:

int num = 48764;   // assign your number

// Generate hexadecimal number in reverse.
var sb = new StringBuilder();
do
{
    sb.Append(hexChars[num & 15]);
    num >>= 4;
} 
while (num > 0);

// Pad with leading 0s for a minimum length of 4 characters.
while (sb.Length < 4)
    sb.Append('0');

// Reverse string and get result.
char[] chars = new char[sb.Length];
sb.CopyTo(0, chars, 0, sb.Length);
Array.Reverse(chars);
string result = new string(chars);

PadLeft(4, '0')在字符串前加0開頭,以確保最小長度為4個字符。

hexChars值查找可以簡單地定義為字符串:

internal static readonly string hexChars = "0123456789ABCDEF";

編輯 :用List<char>替換StringBuilder

// Generate hexadecimal number in reverse.
List<char> builder = new List<char>();
do
{
    builder.Add(hexChars[num & 15]);
    num >>= 4;
}
while (num > 0);

// Pad with leading 0s for a minimum length of 4 characters.
while (builder.Count < 4)
    builder.Add('0');

// Reverse string and get result.
char[] chars = new char[builder.Count];
for (int i = 0; i < builder.Count; ++i)
    chars[i] = builder[builder.Count - i - 1];
string result = new string(chars);

注意 :有關此轉換的討論,請參閱Expert .NET Micro Framework的“十六進制數輸出”部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM