クラスタ内にある文字列は、なぜ文字列の長さより4バイト分だけ大きなものになっているのでしょうか。



使用ソフトウェア:
使用ソフトウェア・バージョン: 8.0
使用ソフトウェア・バージョンに特化:
二次のソフトウェア: N/A

問題:

クラスタ内に大きさの分かっている文字列があり、それをFig.1のように文字列に平坦化関数に入力しています。出力される文字列の長さを見てみると、配列または文字列サイズを先頭に追加?(T)がtrueやfalseでもいつも4バイトだけ大きくなっています。それはなぜなのでしょうか。

Figure 1: 文字列を含んだクラスタについてのブロックダイアグラム



解決策:

クラスタ内の文字列は、平坦化されると文字列の長さの情報を常に含むようになります。その情報はU32整数として保存されます。したがって、平坦化された文字列の長さは入力文字列の長さ(nバイト)と文字列の長さの情報(4バイト)の合計になります。結果として長さはn+4バイトになります。

表示器を文字列に平坦化関数の出力に配線し、16進数の文字列に表示器を変更することで、この情報を確認することができます。文字列の長さの情報は、常に文字列の前に4バイト(0000 0020)あるのを確認できるかと思います。以下のFig2.をご参考にしてください。

Figure 2: Fig1.のフロントパネル 



関連リンク:

添付:





報告日時: 01/02/2009
最終更新日: 01/08/2009
ドキュメントID: 4T1B42GF