最近抽空写个C#应用FOCAS1函数的FANUC 18M通过TCP/IP读取机床参数的功能,结果发现读到的负值用简单的 byte.ToString()和word.ToString()方法得不到正确的负值,经过多次改写代码和测试,实现byte word 变量负值的ToString准确转换的代码如下:
if (paramater_type == 1) //byte
{
if (sign == 1) //变量符号标志1为无符号数据
{
mystring = ((ushort)byte).ToString();
}
else
{
mystring = ((byte & 128) != 0) ? (byte - 255 - 1) : byte.ToString();
}
}
else if (paramater_type == 2) //word
{
if (sign == 1) //变量符号标志1为无符号数据
{
mystring = ((UInt16)word).ToString();
}
else
{
mystring = (word & 0x8000) != 0) ? word : word.ToString();
}
}
word的负数可以直接赋值到mystring,byte就得自己先转换一下。