【发布时间】:2012-10-16 20:36:57
【问题描述】:
我是一名 C++ 开发人员,上周转到 wpf。好吧,我在我的 c++ 应用程序中使用了 sprintf 很多次,现在我需要在 C# 中使用与它等效的东西。这是我所做的是 C++:
char t_str[4] = {};
for(int i = 0; i < 4; i++)
{
sprintf(t_str, "%02X", buffer[i]);
m_apiResponse[i]->setText(String(t_str));
}
其中buffer[0] = 20;
buffer[1] = 30;
buffer[2] = 40;
buffer[3] = 50; 和m_apiResponse 是一个文本框。
我在我的 C# 中按如下方式完成了此操作:
Byte[] t_str = new Byte[4];
for (int i = 0; i < 4; i++)
{
string bufstring = String.Format("{0:02}", buffer[i]);
t_str = Encoding.UTF8.GetBytes(bufstring);
}
Response1Box = Convert.ToString(t_str[0]);
Response2Box = Convert.ToString(t_str[1]);
Response3Box = Convert.ToString(t_str[2]);
Response4Box = Convert.ToString(t_str[3]);
其中 ResposeBox 是我绑定到的文本框:
// Description of Response1Box
private string _Response1Box;
public string Response1Box
{
get
{
return _Response1Box;
}
set
{
_Response1Box = value;
OnPropertyChanged("Response1Box");
}
}
buffer[64] 是字节[]。
它没有像我的 C++ 方法那样给我预期的答案。这是正确的做法吗:string bufstring = String.Format("{0:02}", buffer[i]);
t_str = Encoding.UTF8.GetBytes(bufstring);我哪里错了???
请帮忙:)
【问题讨论】:
-
那么您正在寻找的预期答案/响应是什么......?
-
所以,如果我记得我的 C++,你想要 0 填充的 2 位十六进制?