Deserializing buffer Protocol Buffer
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I'm trying to deserialize buffer from socket.
It is defined as C struct.
One member of struct is uint8[5].
I stuck how to express that with .proto file.
Original C struct of sender is at below.
typedef struct
uint32_t body_length;
uint8_t body_version;
uint8_t reserved[5];
My struct.proto trial is at below.
syntax = "proto3";
message message_t
uint32 body_version = 1;
uint8 body_version = 2; //uint8_t body_version;
bytes reserved = 3; //uint8 reservered[5];
I don't know how to express uint8 and 5 byte sized array.
There's no uint8 and fixed size bytes at proto3 spec.
protocol-buffers
add a comment |
I'm trying to deserialize buffer from socket.
It is defined as C struct.
One member of struct is uint8[5].
I stuck how to express that with .proto file.
Original C struct of sender is at below.
typedef struct
uint32_t body_length;
uint8_t body_version;
uint8_t reserved[5];
My struct.proto trial is at below.
syntax = "proto3";
message message_t
uint32 body_version = 1;
uint8 body_version = 2; //uint8_t body_version;
bytes reserved = 3; //uint8 reservered[5];
I don't know how to express uint8 and 5 byte sized array.
There's no uint8 and fixed size bytes at proto3 spec.
protocol-buffers
add a comment |
I'm trying to deserialize buffer from socket.
It is defined as C struct.
One member of struct is uint8[5].
I stuck how to express that with .proto file.
Original C struct of sender is at below.
typedef struct
uint32_t body_length;
uint8_t body_version;
uint8_t reserved[5];
My struct.proto trial is at below.
syntax = "proto3";
message message_t
uint32 body_version = 1;
uint8 body_version = 2; //uint8_t body_version;
bytes reserved = 3; //uint8 reservered[5];
I don't know how to express uint8 and 5 byte sized array.
There's no uint8 and fixed size bytes at proto3 spec.
protocol-buffers
I'm trying to deserialize buffer from socket.
It is defined as C struct.
One member of struct is uint8[5].
I stuck how to express that with .proto file.
Original C struct of sender is at below.
typedef struct
uint32_t body_length;
uint8_t body_version;
uint8_t reserved[5];
My struct.proto trial is at below.
syntax = "proto3";
message message_t
uint32 body_version = 1;
uint8 body_version = 2; //uint8_t body_version;
bytes reserved = 3; //uint8 reservered[5];
I don't know how to express uint8 and 5 byte sized array.
There's no uint8 and fixed size bytes at proto3 spec.
protocol-buffers
protocol-buffers
asked Nov 14 '18 at 0:15
sungyongsungyong
5131528
5131528
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
protobuf indeed doesn't have fixed size arrays, and the fixed size integers don't include 5 bytes. So; your best option is probably bytes
, and just make it always contain exactly 5 bytes.
Note: protobuf is not intended as a mechanism for parsing arbitrary protocols / payloads such as socket frames or raw C-style dumps. It is only intended for use with protobuf itself.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53291355%2fdeserializing-buffer-protocol-buffer%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
protobuf indeed doesn't have fixed size arrays, and the fixed size integers don't include 5 bytes. So; your best option is probably bytes
, and just make it always contain exactly 5 bytes.
Note: protobuf is not intended as a mechanism for parsing arbitrary protocols / payloads such as socket frames or raw C-style dumps. It is only intended for use with protobuf itself.
add a comment |
protobuf indeed doesn't have fixed size arrays, and the fixed size integers don't include 5 bytes. So; your best option is probably bytes
, and just make it always contain exactly 5 bytes.
Note: protobuf is not intended as a mechanism for parsing arbitrary protocols / payloads such as socket frames or raw C-style dumps. It is only intended for use with protobuf itself.
add a comment |
protobuf indeed doesn't have fixed size arrays, and the fixed size integers don't include 5 bytes. So; your best option is probably bytes
, and just make it always contain exactly 5 bytes.
Note: protobuf is not intended as a mechanism for parsing arbitrary protocols / payloads such as socket frames or raw C-style dumps. It is only intended for use with protobuf itself.
protobuf indeed doesn't have fixed size arrays, and the fixed size integers don't include 5 bytes. So; your best option is probably bytes
, and just make it always contain exactly 5 bytes.
Note: protobuf is not intended as a mechanism for parsing arbitrary protocols / payloads such as socket frames or raw C-style dumps. It is only intended for use with protobuf itself.
answered Nov 14 '18 at 9:23
Marc Gravell♦Marc Gravell
795k19821632567
795k19821632567
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53291355%2fdeserializing-buffer-protocol-buffer%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown