当前位置:编程学习 > C#/ASP.NET >>

byte的赋值范围

供应商提供了这样一个接口定义:
public static extern bool GetDVRIPByResolveSvr(string sServerIP, ushort wServerPort, ref byte sDVRName, ushort wDVRNameLen, ref byte sDVRSerialNumber, ushort wDVRSerialLen, string sGetIP, ref uint dwPort);

其中的ref byte sDVRSerialNumber 对应的是机器的序列号,一般是9位数字,比如419191927,定义变量sDVRSerialNumber我是这样写的:
byte DDNSDevSN =Txt_DveSN.Text;
编译的时候提示超出范围了,byte的取值范围是0-255,很显然是要报错了,那我怎么对sDVRSerialNumber赋值呢,机器的序列号的确是9位数字的
请各位帮忙给个意见,再次谢谢了 --------------------编程问答-------------------- 如果你能改方法签名,直接把ref byte改为byte[]:
ublic static extern bool GetDVRIPByResolveSvr(string sServerIP, ushort wServerPort, byte[] sDVRName, ...); --------------------编程问答-------------------- 不能改的,是供应商提供的,如果能改成数组的话早就解决了 --------------------编程问答-------------------- 改下这个函数声明,如果不想改,传数组首元素也可以

byte[] b = { ... };
GetDVRIPByResolveSvr(..., b[0], ...); --------------------编程问答-------------------- 函数声明完全是可以改的。因为这不涉及编译器的检查。如果签名和函数不对,也是运行时的问题。 --------------------编程问答--------------------
引用 4 楼 caozhy 的回复:
函数声明完全是可以改的。因为这不涉及编译器的检查。如果签名和函数不对,也是运行时的问题。

如果是内联编译的本地方法,方法名是不能修改的。
ref byte其实很好处理,你只要这样写即可:
byte[] DDNSDevSN = Encoding.UTF7.GetBytes(Txt_DveSN.Text);
传递:ref DDNSDevSN[0]
如果是可回传的内容,数组长度需要增大些,以免写入时超出数组长度导致数据溢出。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,