我在
Java中解析一个具有以下规范的字节数组:
Trace data format: - 4 bytes containing the Id. - 4 bytes containing the address. - N bytes containing the first name,where 0 < N < 32 - N bytes containing the last name,where 0 < N < 32 - 4 bytes containing the Minimum - 4 bytes containing the Maximum - 4 bytes containing the Resource Default Level
今天我没有看到解析这个数组的任何解决方案,以获得具有正确类型的7变量.你确认或者我错过了Java中的魔术函数,允许在字节数组中找到字符串“限制”(我无法看到最小值如何与其关联的ASCII字符区分开来).
关于2个字符串之间的特殊字符是否有任何“约定”?
解决方法
好吧,你知道第一个名字从字节9开始,而姓氏以字节结尾(lenght-13).不确定的是如何找到名字的结尾和姓氏的开头.我看到一些可能的消息:
>如果格式是由C程序员定义的,则两个名称字段很可能以空字节终止,因为这是字符串的C约定.
>如果它是由Java程序员定义的,它可以由writeUTF()
写入,这意味着字节计数的规范很可能是错误的.但是,这至少指定了编码,否则这是一个悬而未决的问题.>如果它是由COBOL程序员定义的,则这两个字段可以是固定长度的,并用零或空格填充,格式规范列出有效负载长度而不是字段长度.>如果它是由一个真正无能的程序员(无论什么语言)定义的,它包含两个没有分隔符或计数的名称,所以不可能实际分开它们(如果你没有这些信息,那么就没有“魔法”功能了Java或其他可以凭空捏造的东西).我想你可能希望姓氏总是以大写字母开头,没有人使用双重名字或全部大写字母.