c # Pad у ведущих октетов - PullRequest
       7

c # Pad у ведущих октетов

1 голос
/ 08 апреля 2011

у меня есть экспонента, что 3 байта в длину.Теперь мне нужно, чтобы это было 4 байта.Я нашел где-то, что я мог бы дополнить ведущие октеты ... но я понятия не имею, как это сделать .. Так кто-нибудь может мне помочь?

Пример ввода: экспонента, что у меня сейчас есть, 65537, int bytesтогда 01 00 01.

Ответы [ 2 ]

3 голосов
/ 08 апреля 2011

Предполагая, что вы просто хотите заполнить его нулями, создайте новый четырехбайтовый массив и скопируйте в него существующий:

byte[] newArray = new byte[4];
// Copy bytes 0, 1, 2 of oldArray into 1, 2, 3 of newArray.
Array.Copy(oldArray, 0, newArray, 1, 3);

(Вы можете сделать это вручную с помощью трех назначений; это потенциальнопроще в этой ситуации, но плохо масштабируется (с точки зрения кода) до больших размеров.)

Измените «1» на «0», если вы обнаружите, что вам нужно заполнение в конце вместоначать ... или использовать Array.Resize в этом случае.

1 голос
/ 08 апреля 2011

Не полностью уверен в значении, но звучит так, как будто вы просто хотите:

byte[] first = /* 3 bytes */
byte[] second = new byte[4];
// since 3 bytes, we'll do this manually; note second[0] is 0 already
second[1] = first[0];
second[2] = first[1];
second[3] = first[2];

Конечно, если вы на самом деле имеете дело с int, это уже дополняется слева от 0 до 4 байтов.

...