gpt4 book ai didi

c# - 无法使用 String.Format 在 WPF 中显示版本字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:53:37 26 4
gpt4 key购买 nike

我是一名 C++ 开发人员,最近转向了 C#。我正在开发一个 wpf 应用程序,我需要在其中处理 String.Format。在我的 C++ 应用程序中,我曾使用 sprintf 来获取结果,但在 C# 中,string.format 帮助我实现了它。现在我遇到了一个棘手的情况,我需要实现类似的事情但具有不同的值(value)观。这是 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));
}

其中缓冲区[0] = 20;
缓冲器[1] = 30;
缓冲器[2] = 40;
buffer[3] = 50;
m_apiResponse 是一个文本框。

尽管 string.format 也很有帮助,但我宁愿选择简单的方法。我在我的 C# 中按如下方式完成了此操作:

Response1Box = buffer[0].ToString("X2");
Response2Box = buffer[1].ToString("X2");
Response3Box = buffer[2].ToString("X2");
Response4Box = buffer[3].ToString("X2");

它运行良好,给了我想要的答案。但是现在我在我的 C++ 应用程序中遇到了它的扭曲版本.....这是代码:

unsigned char buffer[8] = {};
char verString[64] = {};

m_msp430->WriteInternalCommand(cmd, 1, buffer);
m_msp430->ReadInternalCommand(cmd, 4, buffer);

sprintf(verString, "FPGA 0x42 Version (dd/mm/yyyy ID): %02d/%02d/20%02d %02d", ((buffer[3] & 0xF8) >> 3),
(buffer[2] & 0x0F), ((buffer[2] & 0xF0) >> 4), (buffer[3] & 0x07));

m_versionString->setText(String(verString), false);

这里 m_versionString 是一个标签,一旦执行这条语句,它就会打印出例如FPGA 0x42 版本(dd/mm/yyyy ID):00/00/2012 23。我在 C# 中尝试如下:

// Description of VersionString label which displays
private string _VersionString;
public string VersionString
{
get
{
return _VersionString;
}

set
{
_VersionString = value;
OnPropertyChanged("VersionString");
}
}

public void GetVersion()
{
int cmd = 0x0A42;
Byte[] buffer = new Byte[8];
Byte[] verString = new Byte[64];

mComm.WriteInternalCommand(cmd, 1, ref buffer);
mComm.ReadInternalCommand(cmd, 4, ref buffer);

// Failing to figure out how to achieve it

VersionString = Convert.ToString(verString);
}

我如何执行这些操作并将其显示在我的 VersionString 上?? :) 请帮忙:)

最佳答案

您的 C++ 代码不等同于您的 C# 代码。您在 sprintf 之前对每个字节进行屏蔽和位移。 C# 不可能知道如何屏蔽掉各个字节来生成字符串。

现在时间不多..但基本上是这样的..

verString = String.Format("FPGA 0x42 Version (dd/mm/yyyy ID): {0}/{1}/20{2} {3}", ((buffer[3] & 0xF8) >> 3), 
(buffer[2] & 0x0F), ((buffer[2] & 0xF0) >> 4), (buffer[3] & 0x07));

或者您可以在调用转换之前不使用 String.Format 逐字节执行

关于c# - 无法使用 String.Format 在 WPF 中显示版本字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13116035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com