我目前正在尝试将.NET JSON编码器转换为NETMF但由于Convert.ToString()
遇到了问题,因为NETMF中没有这样的东西。
编码器的原始行如下所示:
Convert.ToString(codepoint, 16);
在查看Convert.ToString(Int32, Int32)
的文档之后,它说它是将int32
转换为int 2,8,10或16,方法是将int作为第一个参数,将base作为第二个参数。
有哪些低级代码可以执行此操作或如何执行此操作?
从代码中可以看出,我只需要从Int32
转换为Int16
。
修改
啊,编码器也想做:
PadLeft(4, '0');
在字符串上,这只是将4'0'+'0'+'0'+'0'添加到字符串的开头?
答案 0 :(得分:4)
如果您的意思是要将32位整数值更改为显示hexadecimal中值的字符串:
string hex = intValue.ToString("x");
有关变体,请参阅Stack Overflow问题 Convert a number into the hex value in .NET 。
免责声明:我不确定NETMF中是否存在此功能,但我认为它应该是如此基本。
答案 1 :(得分:2)
以下是将整数转换为十六进制(基数为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";
修改:用StringBuilder
替换List<char>
:
// 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的“十六进制数字输出”部分。