Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7407063
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 29, 20262026-05-29T05:39:07+00:00 2026-05-29T05:39:07+00:00

I have an object with a char Array; where the first 5 bytes(char in

  • 0

I have an object with a char Array; where the first 5 bytes(char in C++) are additional data and everything afterwards is a string message.

So my question is how can I get a string from starting index 5 way up to the last byte?

I know there is memccpy, but it requires an ending char, which I can’t know beforehand.
I am aware there is a string object in C++, but the idea is to send back and forth a byte array which contains the data and message. So in a sense I serialize and deserialize back and forth.

Any suggestions?

Edit:

Packet * Packet::create(byte const data[])
{
    //Concat all first 4 byte values to a uint32
    unsigned int length = data[0] << 32 | data[1] << 16 | data[2] << 8 | data[3] << 0;

    //4th element is packet type
    PacketType type = (PacketType)data[4];

    string packetData;

    packetData.clear();
    char * cdata;
    //Check packet data is present
    if(sizeof(data) > 5)
    {
        //string s((char)data);
        //packetData = s.substr(4, s.length() - 4);
        strncat(cdata,data+5,sizeof(data)-5);
        packetData.append(cdata);
    }

    //Create new packet;
    Packet * packet = new Packet(length,type,packetData);

    return packet;
};

It won’t accept data[] even when I cast it to char.
The argument isn’t a pointer?

Edit::

Packet * Packet::create(char const * data)
{
    //Concat all first 4 byte values to a uint32
    unsigned int length = data[0] << 32 | data[1] << 16 | data[2] << 8 | data[3] << 0;

    //4th element is packet type
    PacketType type = (PacketType)data[4];

    //Set packet data, if available
    string packetData = (sizeof(data) > 5) ? string(data+5):"";

    Packet * packet = new Packet(length,type,packetData);
    return packet;
};

I still have to test this, but I had to use char, how do I use my own typedef in this situation?

Also what is the difference between
“char * data”
and
“char data[]”

I thought arrays and pointers are one and the same thing.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-29T05:39:08+00:00Added an answer on May 29, 2026 at 5:39 am

    You mentioned “know there is memccpy, but it requires an ending char, which I can’t know beforehand”. Does that means that your serialized data doesn’t have neither the size of the data nor a delimiter? Without that how do you expect
    “string packetData = (sizeof(data) > 5) ? string(data+5):””;”
    to work?
    For the serialization you could send the size of your data as well in the header. Then use the simple memcpy.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

If have an array of char's pulled out of an NSData object with getBytes:range:
I have a function like: // string is a null-terminated char array. Replace all
I have an object that I'm freeing with delete, and it has a char*
In C++ I have only seen this done by converting the string object into
my question is: I have a dictionary with one object for each character of
I have an object array that is being passed and then split up into
I have an array of constant data like following: enum Language {GERMAN=LANG_DE, ENGLISH=LANG_EN, ...};
I have object A which in turn has a property of type Object B
I have object A which contains multiple instances of object B, which in turn
I have two tables: object that has object_id column and avalues that have object_id

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.