2017-02-03 19 views
0

Я как-то застрял со следующей проблемой:Biztalk FlatFile заполнить узел с NULL значениями

У меня есть схема, где мне нужно подсчитать длину первой части сообщения потому что имеет динамическую длину, и в конце заполните его с помощью NULL, пока не достигнет 256 байтовых блоков.

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

public string GetHexNulls(string val) 
    { 

     var b = new StringBuilder(); 
     for (int i = 0; i < 256 - val.Length; i++) 
     { 
      b.Append(0.ToString("X")); 
     } 

     return b.ToString(); 
    } 

Я не могу управлять, чтобы получить NULLs (HEX 0х00), но нормальные нулевые строки (HEX 0x30). Понятно, в чем моя проблема?

Я не уверен, как достичь этого - или более общего, как распечатать значения HEX для текстового файла, которые признаются значениями HEX. Думаю, все это касается кодирования?

+1

Ну, имейте в виду, «шестигранной» часть не имеет никакого значения. Null - char 0 независимо от того, как это выражено. Вы уверены, что не можете использовать Pad Character = 0x00? –

+0

Да, обычно я использовал бы пэд-чар, поскольку это работает как ожидалось в позиционном плоском файле, но в этом случае мне нужен динамический размер для узла. Как это сделать? – Megalomaniac

+0

Но «заполнить до конца» означает фиксированную ширину? –

ответ

0

В других областях динамичны по размеру, то эти поля должны быть разграничены

Что можно сделать, это объединение полей вместе с разделителем в карты в одном поле, на котором вы установили на минимальную длину с Pad Character до 256 и Pad Character до 0x00 и Pad Тип персонажа в шестнадцатеричный.

Null Padding Properties

+0

Это действительно способ решить проблему. Я так не думал об этом. Единственное, что мне не нравится, у вас есть все в одной поданной. Это испортит схему, и она просто выглядит как-то уродливо, чтобы хранить все в одном поле. Я проверю мой подход к трубопроводу, чтобы вы знали, как это работает! – Megalomaniac

+0

В моем первом сообщении я не упомянул, что также нужно установить несколько символов шестнадцатеричной клавиатуры в первой части сообщения. Эти символы пэдов определяют области с начальным и конечным блоками. Так что это не сработает. Я не могу хранить все в одном поле, так как мне нужны определенные поля для символов пэда. – Megalomaniac

+0

@Megalomaniac. Тогда вам лучше обновить свой вопрос, используя ссылку [edit], дающую все детали, мы не можем вам помочь, если вы только дадите нам часть проблемы. Дайте нам пример схемы ввода и ввода и ожидаемого результата. – Dijkgraaf

 Смежные вопросы

  • Нет связанных вопросов^_^