Skip to content

Regarding the complex parcel data parsing #7

@baivoom

Description

@baivoom

Just give an example to explain the format of printed parcel data

x1q:/ $ service call phone 69  s16 'shell' s16 ''
Result: Parcel(
  0x00000000: 00000000 00000001 00000001 00000003 '................'
  ****HIDDEN SOME DATA****
  0x000000a0: 00000000                            '....            ')

the first and last 00000000 seems the open and close tags of the content, therefore just skip these chunks.

then for the 00000001 00000001 00000003, the first 00000001 seems to indicate a successful call. Here the expected call return is List<CellInfo>, hence the second 00000001 is the length of the list.

Since the encoding is using little endian, the 00000001 should be reversed to 01000000 then the Parcel can use readInt() correctly, in this case val count = parcel.readInt() , count indicates how many element in the return list.

To decode the CellInfo , it should call CellInfo.Creator.readFromParcel(parcel) and depends on the count, it should be called multiple times to fully decode them all

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions