问题在转换的sprintf到C#
问题描述:
我有此线我需要写在C#问题在转换的sprintf到C#
sprintf(
currentTAG,
"%2.2X%2.2X,%2.2X%2.2X",
hBuffer[ presentPtr+1 ],
hBuffer[ presentPtr ],
hBuffer[ presentPtr+3 ],
hBuffer[ presentPtr+2 ]);
hbuffer
是uchar
阵列。
在C#我有一个字节数组相同的数据,我需要实现这一行...
请帮助...
答
检查,如果这个工程:
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
:
unsigned char test[] = { 0x01, 'a' };
printf("%2.2X %2.2X", test[0], test[1]);
使用上述信息,以下C#中的控制台代码段的输出也01 61
:
byte[] test = { 0x01, (byte) 'a' };
Console.WriteLine(String.Format("{0:X2} {1:X2}", test[0], test[1]));
hBuffer的每个字节转换为与第二个例子中一样,字符串效率较低。第一个例子会给你更好的性能,特别是如果你多次这样做,通过不垃圾垃圾收集器。 – 2011-01-11 13:36:05