为什么在字符串后尾随0x00字节?

问题描述 投票:0回答:1

bson字符串写为:int32 (byte*) "\x00"

规格如下:The int32 is the number bytes in the (byte*) + 1 (for the trailing '\x00'). The (byte*) is zero or more UTF-8 encoded characters.

但是为什么使用结尾的零字节?如果我们使用utf-8编码的字符串长度,则对于字节数据工作流程就足够了,0x00字节仅添加了不需要的字节。我想念什么吗?

mongodb bson
1个回答
0
投票

Spec指出byte*zero or more characters,因此,我猜这是因为某些空字符串(例如"")将被保存为数据类型(仅1个字节)而没有尾随数据x00,然后数据元素将尝试将下一个元素解码为字符串。

但是那为什么还要保存空字符串呢?在数据库中为损坏的用例添加一个字节,用于每个字符串?谁想要保存空字符串!

© www.soinside.com 2019 - 2024. All rights reserved.