Преобразовать целое число в шестнадцатеричное и обратно

Мой ответ расширяет предыдущий ответ Брэндона. Я использовал свой пример для создания метода расширения следующим образом:

static public class XmlDocumentExt
{
    static public XmlNamespaceManager GetPopulatedNamespaceMgr(this System.Xml.XmlDocument xd)
    {
        XmlNamespaceManager nmsp = new XmlNamespaceManager(xd.NameTable);
        XPathNavigator nav = xd.DocumentElement.CreateNavigator();
        foreach (KeyValuePair<string,string> kvp in nav.GetNamespacesInScope(XmlNamespaceScope.All))
        {
            string sKey = kvp.Key;
            if (sKey == "")
            {
                sKey = "default";
            }
            nmsp.AddNamespace(sKey, kvp.Value);
        }

        return nmsp;
    }
}

Затем в моем XML-синтаксическом коде я просто добавляю одну строку:

XmlDocument xdCandidate = new XmlDocument();
xdCandidate.Load(sCandidateFile);
XmlNamespaceManager nmsp = xdCandidate.GetPopulatedNamespaceMgr();  // 1-line addition
XmlElement xeScoreData = (XmlElement)xdCandidate.SelectSingleNode("default:ScoreData", nmsp);

Мне очень нравится это потому что он полностью динамичен с точки зрения загрузки пространств имен из исходного XML-файла и не полностью игнорирует концепцию пространств имен XML, поэтому это можно использовать с XML, для которого требуется несколько пространств имен для deconfliction.

424
задан Glenn Ferrie 25 June 2019 в 17:46
поделиться

5 ответов

// Store integer 182
int intValue = 182;
// Convert integer 182 as a hex in a string variable
string hexValue = intValue.ToString("X");
// Convert the hex string back to the number
int intAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);

из http://www.geekpedia.com /KB8_How-do-I-convert-from-decimal-to-hex-and-hex-to-decimal.html

819
ответ дан 22 November 2019 в 23:11
поделиться

To Hex:

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

To int:

int intValue = int.Parse(hex, System.Globalization.NumberStyles.HexNumber)
14
ответ дан 22 November 2019 в 23:11
поделиться
string HexFromID(int ID)
{
    return ID.ToString("X");
}

int IDFromHex(string HexID)
{
    return int.Parse(HexID, System.Globalization.NumberStyles.HexNumber);
}

Однако я действительно сомневаюсь в ценности этого. Вы заявили, что цель - сделать ценность короче, что так и будет, но это не самоцель. Вы на самом деле имеете в виду либо облегчить запоминание, либо облегчить набор текста.

Если вы имеете в виду более легкое запоминание, то вы делаете шаг назад. Мы знаем, что он все того же размера, только кодируется по-другому. Но ваши пользователи не будут знать, что буквы ограничены «A-F», и поэтому идентификатор будет занимать для них такое же концептуальное пространство, как если бы была разрешена буква «AZ». Так что вместо запоминания телефонного номера это больше похоже на запоминание GUID (эквивалентной длины).

Если вы имеете в виду набор текста, вместо того, чтобы иметь возможность использовать клавиатуру, пользователь теперь должен использовать основную часть клавиатуры. Скорее всего, набрать будет сложнее,

18
ответ дан 22 November 2019 в 23:11
поделиться

Использование:

int myInt = 2934;
string myHex = myInt.ToString("X");  // Gives you hexadecimal
int myNewInt = Convert.ToInt32(myHex, 16);  // Back to int again.

См. Как выполнить преобразование между шестнадцатеричными строками и числовыми типами (Руководство по программированию C #) для получения дополнительной информации и примеров.

105
ответ дан 22 November 2019 в 23:11
поделиться

Попробуйте следующее, чтобы преобразовать его в шестнадцатеричный

public static string ToHex(this int value) {
  return String.Format("0x{0:X}", value);
}

И обратно

public static int FromHex(string value) {
  // strip the leading 0x
  if ( value.StartsWith("0x", StringComparison.OrdinalIgnoreCase)) {
    value = value.Substring(2);
  }
  return Int32.Parse(value, NumberStyles.HexNumber);
}
55
ответ дан 22 November 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: