我正在使用Pickled Scala签名,将字节写入PickleBuffer并使用ShowPickled将其读回。
我可以使用
按预期编写和回读Int
PB.myBuf.writeByte(2)
在
中给出'2'(在这种情况下对条目号的引用) 1(MyRecord) 2 40[case] 5
。
但是,如果我在条件中的相同代码,如:
if (ExtModClassRef.position==0) PB.myBuf.writeByte(2)
,
或
ExtModClassRef.position match {case 0 => PB.myBuf.writeByte(2)}
,
然后我读回的字节是乱码:
0,4: CLASSsym 4: 1(MyRecordmodels\00\00
...
而不是前几个条目应该如何:
0,4: CLASSsym 4: 1(MyRecord) 2 40[case] 5
1,10: TYPEname 8: MyRecord
2,20: EXTMODCLASSref 1: 3(models)
3,23: TERMname 6: models
我很困惑if
和match
关键字如何对写入的字节产生影响。
也许有人可以建议修复或解决方法?
谢谢你, 儒略
答案 0 :(得分:2)
我能看到影响写入字节的唯一两种方法是:
ExtModClassRef.position
实际上不是0
,因此您希望写入的字节数不是,并且当您稍后写入其他内容时,它会破坏记录。
ExtModClassRef.position
来电以某种方式修改myBuf
。
如果没有看到自己的代码,就无法确定是哪种情况(或者可能是不同的东西)。