2017-02-03 101 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(); 
    } 

我不能設法得到空值(十六進制爲0x00 )但正常的字符串零(十六進制0x30)。是否清楚我的問題是什麼?

我不知道如何實現這個或更一般的如何將HEX值打印到被識別爲HEX值的文本文件中。我想這是關於編碼?

+1

嗯,記住,在「十六進制」部分其實並不重要。無論它如何表達,空值都是char 0。你確定你不能只使用Pad Character = 0x00? –

+0

通常情況下,我會使用pad char,因爲它在位置平面文件中按預期方式工作,但在這種情況下,我需要節點的動態大小。如何實現這一目標? – Megalomaniac

+0

但是「填充到底」意味着固定的寬度? –

回答

0

由於其他域是動態的大小,那麼這些字段必須分隔

什麼可以做的是與你的分隔符拼接領域一起在地圖插入你設置了最小長度單場填充字符到256和填充字符到0x00和填充字符類型到十六進制。

Null Padding Properties

+0

這真的是一種解決問題的方法。我沒有這樣想過。我不喜歡的唯一的東西,你有一個提交的一切。那樣就搞亂了這個模式,它看起來好像很難將所有東西存儲在一個字段中。我會檢查我的管道方法,讓你知道這是如何工作的! – Megalomaniac

+0

在我的第一篇文章中,我沒有提到過,還需要在第一個消息部分設置一些六角墊字符。這些填充字符用於定義具有開始和結束塊的區域。所以這是行不通的。我無法在一個字段中存儲所有內容,因爲我需要爲填充字符定義字段。 – Megalomaniac

+0

@Megalomaniac然後你最好使用提供所有細節的[edit]鏈接更新你的問題,如果你只給我們提供部分問題,我們無法真正幫助你。給我們一個樣本輸入和輸入模式和預期輸出。 – Dijkgraaf