将c#的代码转换为tcl如何创建此数组或其他数组,以及如何应用if条件';

将c#的代码转换为tcl如何创建此数组或其他数组,以及如何应用if条件';,tcl,Tcl,将下面给出的代码转换为tcl:- ReportLog(“\n检查第四和第五TLP”); UInt32[]tlp4=新UInt32[4]; UInt32[]tlp5=新UInt32[4]; GetTlp(3,tlp4); GetTlp(4,tlp5); 对于(int i=0;i

将下面给出的代码转换为tcl:-

ReportLog(“\n检查第四和第五TLP”);
UInt32[]tlp4=新UInt32[4];
UInt32[]tlp5=新UInt32[4];
GetTlp(3,tlp4);
GetTlp(4,tlp5);
对于(int i=0;i<4;i++)
{
if(tlp4[i]!=tlp5[i])
{
ReportLog(“\n通过链接恢复重试缓冲区不持久。测试失败。”);
ReportResult(ETestResultCode.RESULT_错误,“通过链接恢复重试缓冲区不持久。测试失败”);
返回1;
}
这里的值
newuint32[4]
是从其他函数填充的。。。。。。 主要是我搞不懂如何写下面给出的部分

UInt32[]tlp4=新UInt32[4];
UInt32[]tlp5=新UInt32[4];
GetTlp(3,tlp4);
GetTlp(4,tlp5);
对于(int i=0;i<4;i++)
{
if(tlp4[i]!=tlp5[i])
{

Tcl以一种与C#完全不同的方式管理内存和数字。这在很大程度上改变了正确的方法。但是,我们可能希望界面如下所示:

set tlp4[lrepeat 4 0];#必须指定默认值;C#无论如何只使用0。
设置tlp5[lrepeat 4 0]
#这些行可能会有很大的不同;所讨论的代码不是标准的Tcl
#请注意,我们正在传入变量*names*。
captureMemory getTlp 3 tlp4
captureMemory getTlp 4 tlp5
#Foreach可以一次迭代多个列表;这很好*
每个要素4$tlp4要素5$tlp5{
如果{$element4!=$element5}{
#请执行错误处理。。。
一种更混乱但更直接的方法是使用字节数组

set tlp4[二进制格式“iu4”{0}]
设置tlp5[二进制格式“iu4”{0}]
captureMemory getTlp 3 tlp4
captureMemory getTlp 4 tlp5
#转换为列表
二进制扫描$tlp4“iu4”uints4
二进制扫描$tlp5“iu4”uints5
每个元素4$uints4元素5$uints5{
如果{$element4!=$element5}{
#请执行错误处理。。。
请注意,
iu4
格式字符串(对于4个无符号整数,每个大小为4字节)仅在Tcl 8.6之后才受支持。对于较旧版本,您需要使用
i4
并处理值有符号这一事实

此外,如果只是比较值,则可以直接使用
$tlp4
$tlp5
之间的字符串相等