我有这条线,我需要用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#中,我在字节数组中有相同的数据,我需要实现这一行......
请帮忙......
答案 0 :(得分:2)
Composite Formatting:此页面讨论了如何使用string.Format()
功能。
答案 1 :(得分:2)
检查是否有效:
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]));
答案 2 :(得分:0)
您正在寻找String.Format方法。