试图在 C# 中理解 Postgres 的二进制副本格式

Ash*_*Ash 3 .net c# postgresql

考虑PostgreSQL 文档中关于二进制复制的以下文本:

11 字节序列 PGCOPY\n\377\r\n\0 — 请注意,零字节是签名的必需部分。(该签名旨在允许轻松识别已被非 8 位清洁传输修改过的文件。此签名将通过行尾转换过滤器、删除零字节、删除高位或奇偶校验变化。)

我可以创建标题的其余部分,但是 \377 是什么意思?我认为单个字节中的最大值是 256?

此外,在示例中:

0000000   P   G   C   O   P   Y  \n 377  \r  \n  \0  \0  \0  \0  \0  \0
0000020  \0  \0  \0  \0 003  \0  \0  \0 002   A   F  \0  \0  \0 013   A
0000040   F   G   H   A   N   I   S   T   A   N 377 377 377 377  \0 003
0000060  \0  \0  \0 002   A   L  \0  \0  \0 007   A   L   B   A   N   I
0000100   A 377 377 377 377  \0 003  \0  \0  \0 002   D   Z  \0  \0  \0
0000120 007   A   L   G   E   R   I   A 377 377 377 377  \0 003  \0  \0
0000140  \0 002   Z   M  \0  \0  \0 006   Z   A   M   B   I   A 377 377
0000160 377 377  \0 003  \0  \0  \0 002   Z   W  \0  \0  \0  \b   Z   I
0000200   M   B   A   B   W   E 377 377 377 377 377 377
Run Code Online (Sandbox Code Playgroud)

这些相同的 377 个值代表什么,当我解释格式时,它们不应该是 \0 吗?

如果有人可以帮助解决其余的格式,我们将不胜感激。我可以欺骗并使用 CVS 数据库副本,但是由于我需要复制的行数(以百万计),我知道二进制格式在速度上比 CVS 格式有很多优势。

Jon*_*eet 5

\377是八进制-十进制值255是否有任何关于它是专门迷惑你的格式?