当前位置: 首页 > 面试题库 >

解析字节数组,包含未知长度的字段

谷梁宏恺
2023-03-14
问题内容

我正在用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中的魔术函数之类的东西,该函数允许在字节数组中查找字符串“限制”(我看不出如何将Minimum
value与相关的ASCII字符区分开)。

两个字符串之间是否有关于特殊字符的“约定”?


问题答案:

好吧,您知道名字从字节9开始,姓氏在字节结尾(lenght-13)。不确定的是如何找到名字的结尾和姓氏的开始。我看到一些可能的观点:

  • 如果格式是由C程序员定义的,则这两个名称字段很可能以空字节终止,因为这是字符串的C约定。
  • 如果它是由Java程序员定义的,则可以由编写writeUTF(),这意味着字节数的指定很可能是错误的。但是,这至少指定了编码,否则将是一个悬而未决的问题。
  • 如果由COBOL程序员定义,则这两个字段可以是固定长度的,并用零或空格填充,格式说明列出的是有效负载长度而不是字段长度。
  • 如果它是由一个真正不称职的程序员(无论使用哪种语言)定义的,则它包含两个没有定界符或计数的名称,因此不可能将它们分开(如果您没有信息,Java中就没有“魔术”函数)或其他可以凭空想到的地方)。我想您可以希望姓氏始终以大写字母开头,并且没人使用双精度名称或全大写字母。


 类似资料:
  • 问题内容: 我正在将文件读取成块的字节数组,然后通过POST请求通过网络将其发送到Web服务器。没什么复杂的,在使用完全相同的代码之前,我已经完成了。这次,我注意到我的图像到达服务器时看起来真的很奇怪,所以我决定查看发送的字节数组和接收的字节数组,以确保它是相同的。不是。在Java发送端,字节数组包含负数。在C#接收端,没有负数。 接收方的前15个字节(C#) 那些相同的字节,但是在发送端(jav

  • 问题内容: 我让我的用户以HTML形式添加数字输入,并用值填充它们。该表单在提交时被序列化,并发送到一个PHP文件,该文件使用PDO将数据插入到MySQL数据库中。数据库表中有一堆列,用于存储表单中的其他值,但是用于存储用户添加的输入的列的设置如下: 这些列允许使用,因为我根本不知道用户是否会添加任何数字输入。 有没有更好的方法来存储这些数字? 以下是我的JS的一部分,用于获取表单数据并将其发送到

  • 问题内容: 我有一个字节数组,其中包含我希望转换为字符串的ASCII字符。例如: myByteArray在循环后应包含字符串“ 12345678”。如何将此字符串转换为String变量? 谢谢! 问题答案: 用 字符串类为此提供了一个构造函数。 旁注:此处的第二个参数是CharSet(字节编码),应谨慎处理。这里更多。

  • 问题内容: 我希望能够“快速”构建一个numpy数组,但我不知道该数组的大小。 例如,我想做这样的事情: 这将导致包含x的所有元素,这显然是一个简单的答案。我很好奇这是否可能? 问题答案: 构建一个Python列表并将其转换为Numpy数组。每个附加项需要O(1)的摊销时间+ O( n )才能转换为数组,总共需要O( n )。

  • 问题内容: 用户在我的网站上上传图片时遇到了很多问题。 他们最多可以上传6张图片 最初,我不得不将php.ini中的值更改为: 我不得不更改为这个,因为出现了各种错误,例如内存不足,超出最大发布数等。 一切正常,直到我检查了包含以下内容的错误日志: 如果我将帖子的最大值改回前8M,则会收到如下消息: 有什么想法我要去哪里吗? 问题答案: 在某些32位系统上,PHP将采用类似或的内存设置,并且通过不

  • 我试图修复一个java套接字通信错误,服务器不知道输入消息的长度。在当前情况下,服务器测试输入是否完成方法。然而,这种方法并不总是返回正确答案。它会导致读取部分输入。似乎有两种不同的可能性来解决这个问题。 > 客户端应该在发送后关闭其输出流,但这会导致客户端不读取响应,因为输出流关闭时套接字也会关闭。 有没有其他建议,特别是在nio包的帮助下? 非常感谢。