我有一个不寻常的情况,我有一个使用二进制(16)主键的现有mysql数据库,这些是在现有api中使用的uuid的基础。
我的问题是,我现在想添加一个用dotnet核心编写的替换api,我遇到了一个编码问题,这里已经解释过了
具体来说,dotnet中的guid结构使用混合endian格式,该格式生成与现有api不同的字符串。这显然是不可接受的。
所以我的问题是:有没有一种优雅的方法来强制guid结构完全用big-endian格式编码?
如果没有,我可以写一个可怕的黑客,但我想我应该检查与集体智慧的so社区第一!
1条答案
按热度按时间1sbrub3j1#
不;据我所知,这是没有内在的方法。是的,
Guid
有什么我只能称之为“疯狂的恩典”执行目前。你需要拿到Guid
-有序位(通过unsafe
或者Guid.ToByteArray
)然后手动排序,找出要反转的块-这不是一个简单的问题Array.Reverse()
. 所以:恐怕很手工。我建议使用guid,比如调试;这给了你(我想你也知道):
所以:
倒车档4
倒车档2
倒车档2
直8