gpt4 book ai didi

mongodb - 如何使用 mongodb-erlang 和 bson-erlang 将 objectid 转换为二进制子类型 3 (uuid)?

转载 作者:可可西里 更新时间:2023-11-01 09:37:35 24 4
gpt4 key购买 nike

我像这样生成对象 ID:mongodb_app:gen_objectid()这显然返回一个 ObjectId 类型。

我需要一个 BinType(3, ...),因为我们不存储 objectid,而是存储二进制子类型 3 id。

有人知道怎么转换吗?

最佳答案

%%This method is used to generate ObjectId from binary string.
binary_string_to_objectid(BinaryString) ->
binary_string_to_objectid(BinaryString, []).

binary_string_to_objectid(<<>>, Result) ->
{list_to_binary(lists:reverse(Result))};
binary_string_to_objectid(<<BS:2/binary, Bin/binary>>, Result) ->
binary_string_to_objectid(Bin, [erlang:binary_to_integer(BS, 16)|Result]).

%%This method is used to generate binary string from objectid.
objectid_to_binary_string({Id}) ->
objectid_to_binary_string(Id, []).

objectid_to_binary_string(<<>>, Result) ->
list_to_binary(lists:reverse(Result));
objectid_to_binary_string(<<Hex:8, Bin/binary>>, Result) ->
StringList1 = erlang:integer_to_list(Hex, 16),
StringList2 = case erlang:length(StringList1) of
1 ->
["0"|StringList1];
_ ->
StringList1
end,
objectid_to_binary_string(Bin, [StringList2|Result]).

测试示例:

binary_string_to_objectid(<<"51F5BE99118735B187000001">>).
输出:
{<<81,245,190,153,17,135,53,177,135,0,0,1>>}

objectid_to_binary_string({<<81,245,190,153,17,135,53,177,135,0,0,1>>}).
输出:
<<"51F5BE99118735B187000001">>

关于mongodb - 如何使用 mongodb-erlang 和 bson-erlang 将 objectid 转换为二进制子类型 3 (uuid)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10383395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com