我想听听你会如何解决这种编程任务!? 每种类型(OPER=1类型)对应一个特定的信息。
这只是大约 10 个具有相同结构的规范之一。首选创建这些“转换器”(协议(protocol))的通用方法。
最佳答案
如果您正在阅读/编写此内容,我会简单地在 Stream
级别上翻译它,例如:
int b = source.ReadByte();
if (b < 0) throw new EndOfStreamException();
int operx = b & 15;
int oper = (b >> 4) & 15;
b = source.ReadByte();
if (b < 0) throw new EndOfStreamException();
int prefix = b & 7;
int reg = (b >> 3) & 31;
b = source.ReadByte();
if (b < 0) throw new EndOfStreamException();
int period = b & 7;
int fas = (b >> 3) & 3;
int tar = (b >> 5) & 7;
如果您要做很多,您可以将其包装成更优雅的东西,也许使用属性来指定偏移量 - 但对于 10?嗯……不值得。编写一个强大的通用转换器是大量的艰苦工作。
关于c# - 与 .NET 之间的二进制协议(protocol)(C# 语法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5179515/