这个术语因.NET的Interop(不同技术间交互)而流行。取自部队等整编列队集结的本意,引申为对数据格式的重新编排转换,以便在不同标准的二进制接口间传递数据。
注意,这个和数据类型转换不同,数据类型一般并不改变,而只是数据的存储结构改变,从一个标准的结构转换成另一个标准的结构。比如.NET的Boolean是1字节,而Win32是4字节。
专业翻译词典上对此含义给出了两个译词:编列、列集。编列是汉语已有词汇,《汉书》中就有用到,而列集是新造词,个人觉得用已有词汇好一点。微软的MSDN用了另一个译词:封送。这个有点偏离原义,但对不了解细节的用户可能更容易理解一点。
题外话:Marshal作名词是元帅的意思。二战时的马歇尔将军的马歇尔,就是Marshal的音译。而马歇尔的官职其实是元帅,但不喜欢别人叫他元帅,因为叫起来就Marshal Marshal……