2

我目前正在尝试将 .NET JSON 编码器转换为 NETMF,但遇到了问题,Convert.ToString()因为 NETMF 中没有这样的东西。

编码器的原始行如下所示:

Convert.ToString(codepoint, 16);

在查看文档后,Convert.ToString(Int32, Int32)它说它是int32通过提供 int 作为第一个参数和 base 作为第二个参数来将 an 转换为 int 2、8、10 或 16。

有哪些低级代码说明如何执行此操作或我将如何执行此操作?

从代码中可以看出,我只需要从 a 转换Int32Int16.

编辑

啊,编码器也想这样做:

PadLeft(4, '0');

在字符串上,这只是在字符串的开头添加 4 '0' + '0' + '0' + '0' 吗?

4

2 回答 2

4

如果您的意思是要将 32 位整数值更改为以十六进制显示值的字符串:

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

有关变体,请参阅 Stack Overflow 问题Convert a number into the hex value in .NET

免责声明:我不确定NETMF中是否存在此功能,但它是如此基础,我认为它应该存在。

于 2012-06-18T21:39:27.493 回答
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";

编辑:替换StringBuilderList<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的“十六进制数输出”部分。

于 2012-06-18T21:40:18.980 回答