问题描述
我正在尝试编写一个Python实用程序,以将Oracle的RAW字节字符串(作为字符串)转换为Guids,反之亦然。我试图重用我在C#中构建的相同实用程序中的算法,但是从同一字节数组构造Guid
和UUID
会产生不同的Guid / UUID。他们是一样的,不是吗?我读过UUID只是一个更好的名词。
在C#中,我有一个字节数组byte_array
,看起来像这样:
{byte[16]}
[0]: 151
[1]: 163
[2]: 6
[3]: 235
[4]: 224
[5]: 173
[6]: 188
[7]: 79
[8]: 182
[9]: 220
[10]: 222
[11]: 173
[12]: 29
[13]: 103
[14]: 37
[15]: 125
array('B',[151,163,6,235,224,173,188,79,182,220,222,29,103,37,125])
这两个数组显然具有相同的内容,但是在C#中:
guid = new Guid(byte_array) -> guid == eb06a397-ade0-4fbc-b6dc-dead1d67257d
在python中:
guid = uuid.UUID(bytes=byte_array.tostring()) -> guid == 97a306eb-e0ad-bc4f-b6dc-dead1d67257d
我看到C#的Guid(...)
对字节顺序进行了一些重新排列,而Python的UUID(...)
将UUID中的字节顺序保留在字节数组中。
Python结果对于转换Oracle的RAW字节字符串是不正确的,因为我的C#代码有效(正在生产数百行代码)对字节数组显示正确的Guid
。
我有什么办法可以从Python的字节数组中获得一个UUID/Guid
,而该字节数组与C#Guid
相同?
我已经查看了C#Guid(byte[] bytes)
ctor的来源,虽然它是对Guid
中职位的简单分配,但Guid
中的职位数量为11,是int
,short
和byte
类型的,我在Python中没有,并且我不想进入按位操作以在Python中模拟C#类型。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)