C# 将sprintf转换为C时出现的问题#
我有一行需要用C写#C# 将sprintf转换为C时出现的问题#,c#,string,formatting,printf,C#,String,Formatting,Printf,我有一行需要用C写# hbuffer是一个uchar数组 在C#中,我在字节数组中有相同的数据,我需要实现这一行 请帮助…您正在寻找方法。您正在寻找方法。:本页讨论如何使用string.Format()函数。本页讨论如何使用string.Format()函数。检查此功能是否有效: byte[] hBuffer = { ... }; int presentPtr = 0; string currentTAG = string.Format("{0:X2}{1:X2},{2:X2}{3:X2}",
hbuffer
是一个uchar
数组
在C#中,我在字节数组中有相同的数据,我需要实现这一行
请帮助…您正在寻找方法。您正在寻找方法。:本页讨论如何使用string.Format()
函数。本页讨论如何使用string.Format()
函数。检查此功能是否有效:
byte[] hBuffer = { ... };
int presentPtr = 0;
string currentTAG = string.Format("{0:X2}{1:X2},{2:X2}{3:X2}",
hBuffer[p+1],
hBuffer[p],
hBuffer[p + 3],
hBuffer[p + 2]);
这是另一种选择,但效率较低:
byte[] hBuffer = { ... };
int presentPtr = 0;
string currentTAG = string.Format("{0}{1},{2}{3}",
hBuffer[p+1].ToString("X2"),
hBuffer[p].ToString("X2"),
hBuffer[p + 3].ToString("X2"),
hBuffer[p + 2].ToString("X2"));
将hBuffer的每个字节转换为 字符串(如第二个示例中所示)是 效率较低。第一个例子是 给你更好的表现, 特别是如果你多次这样做, 因为不乱丢垃圾 收藏家 在C/C++
%2.2X
中,[从我的头顶]使用大写字母和至少两个字母(左加零)输出十六进制值
<>在C++中,下一个例子在控制台中输出<代码> 01 61 < /C> >:
unsigned char test[] = { 0x01, 'a' };
printf("%2.2X %2.2X", test[0], test[1]);
byte[] test = { 0x01, (byte) 'a' };
Console.WriteLine(String.Format("{0:X2} {1:X2}", test[0], test[1]));
使用上述信息,以下C#代码段在控制台中也会输出01 61
:
unsigned char test[] = { 0x01, 'a' };
printf("%2.2X %2.2X", test[0], test[1]);
byte[] test = { 0x01, (byte) 'a' };
Console.WriteLine(String.Format("{0:X2} {1:X2}", test[0], test[1]));
检查这是否有效:
byte[] hBuffer = { ... };
int presentPtr = 0;
string currentTAG = string.Format("{0:X2}{1:X2},{2:X2}{3:X2}",
hBuffer[p+1],
hBuffer[p],
hBuffer[p + 3],
hBuffer[p + 2]);
这是另一种选择,但效率较低:
byte[] hBuffer = { ... };
int presentPtr = 0;
string currentTAG = string.Format("{0}{1},{2}{3}",
hBuffer[p+1].ToString("X2"),
hBuffer[p].ToString("X2"),
hBuffer[p + 3].ToString("X2"),
hBuffer[p + 2].ToString("X2"));
将hBuffer的每个字节转换为 字符串(如第二个示例中所示)是 效率较低。第一个例子是 给你更好的表现, 特别是如果你多次这样做, 因为不乱丢垃圾 收藏家 在C/C++
%2.2X
中,[从我的头顶]使用大写字母和至少两个字母(左加零)输出十六进制值
<>在C++中,下一个例子在控制台中输出<代码> 01 61 < /C> >:
unsigned char test[] = { 0x01, 'a' };
printf("%2.2X %2.2X", test[0], test[1]);
byte[] test = { 0x01, (byte) 'a' };
Console.WriteLine(String.Format("{0:X2} {1:X2}", test[0], test[1]));
使用上述信息,以下C#代码段在控制台中也会输出01 61
:
unsigned char test[] = { 0x01, 'a' };
printf("%2.2X %2.2X", test[0], test[1]);
byte[] test = { 0x01, (byte) 'a' };
Console.WriteLine(String.Format("{0:X2} {1:X2}", test[0], test[1]));
如第二个示例所示,将hBuffer的每个字节转换为字符串效率较低。第一个示例将为您提供更好的性能,特别是如果您多次这样做,因为您不会向垃圾收集器发送垃圾邮件。这就是为什么我首先指出了另一种选择。但我在你的评论中添加了一条免责声明,以明确这一点。将hBuffer的每个字节转换为字符串,如第二个示例中所示,效率较低。第一个示例将为您提供更好的性能,特别是如果您多次这样做,因为您不会向垃圾收集器发送垃圾邮件。这就是为什么我首先指出了另一种选择。但我在你的评论中添加了一条免责声明,以明确这一点。