使用big-endian格式获取要编码的guid#

nmpmafwu  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(378)

我有一个不寻常的情况,我有一个使用二进制(16)主键的现有mysql数据库,这些是在现有api中使用的uuid的基础。
我的问题是,我现在想添加一个用dotnet核心编写的替换api,我遇到了一个编码问题,这里已经解释过了
具体来说,dotnet中的guid结构使用混合endian格式,该格式生成与现有api不同的字符串。这显然是不可接受的。
所以我的问题是:有没有一种优雅的方法来强制guid结构完全用big-endian格式编码?
如果没有,我可以写一个可怕的黑客,但我想我应该检查与集体智慧的so社区第一!

1sbrub3j

1sbrub3j1#

不;据我所知,这是没有内在的方法。是的, Guid 有什么我只能称之为“疯狂的恩典”执行目前。你需要拿到 Guid -有序位(通过 unsafe 或者 Guid.ToByteArray )然后手动排序,找出要反转的块-这不是一个简单的问题 Array.Reverse() . 所以:恐怕很手工。我建议使用guid,比如

00010203-0405-0607-0809-0a0b0c0d0e0f

调试;这给了你(我想你也知道):

03-02-01-00-05-04-07-06-08-09-0A-0B-0C-0D-0E-0F

所以:
倒车档4
倒车档2
倒车档2
直8

相关问题