问题描述
publicstructRequest{[MarshalAs(UnmanagedType.ByValTStr,SizeConst=12)]publicstringTransAmount;}SPOS.Requestres=newSPOS.Request();res.TransAmount=“000000000012”;intret=SPOS.MapService(refres);代码中定义了TransAmount为12位,传入的也是12位,但是跟踪发现,最后调用MapService后变为了11位[2014-10-1616:32:20][Interface][MapService.cpp][L0154][DEBUG]request->TransAmount:=[00000000001]是什么原因造成的呢?
解决方案
解决方案二:
NULL也需要空间的。
解决方案三:
你想知道什么原因造成的,应该先做以下测试:将位数改为20位,那么最后是变成19位,还是11位?将位数改为11位以下,会不会丢失?
解决方案四:
引用1楼Saleayas的回复:
NULL也需要空间的。
如何处理才能保证数据完整性呢?
解决方案五:
引用2楼Z65443344的回复:
你想知道什么原因造成的,应该先做以下测试:将位数改为20位,那么最后是变成19位,还是11位?将位数改为11位以下,会不会丢失?
20和11是临界值么?改为其它位数是都丢失的
时间: 2024-10-31 21:42:25