我为对象数据类型分配了一些值,例如
object objData =dc.GetDirectoryEntry().Properties["objectGUID"].Value;
此对象重新调整值{byte[16]}
[0]: 145
[1]: 104
[2]: 117
[3]: 139
[4]: 124
[5]: 15
[6]: 255
[7]: 68
[8]: 142
[9]: 159
[10]: 208
[11]: 102
[12]: 148
[13]: 157
[14]: 179
[15]: 75
然后我将此对象转换为byte [],如
byte[] binaryData = objData as byte[];
它也会像
{byte[16]}
[0]: 145
[1]: 104
[2]: 117
[3]: 139
[4]: 124
[5]: 15
[6]: 255
[7]: 68
[8]: 142
[9]: 159
[10]: 208
[11]: 102
[12]: 148
[13]: 157
[14]: 179
[15]: 75
然后我从byte []转换十六进制值,如
string strHex = BitConverter.ToString(binaryData);
它将像**91-68-75-8B-7C-0F-FF-44-8E-9F-D0-66-94-9D-B3-4B**
一样返回..
但我需要像GUID格式的输出,我怎样才能实现这个目标?
答案 0 :(得分:48)
如何使用Guid
constructor which takes a byte array?
Guid guid = new Guid(binaryData);
(如果需要,您可以使用Guid.ToString()
以文本形式获取它。)
答案 1 :(得分:2)
长格式为(enter link description here):
public static string ConvertGuidToOctectString(string objectGuid)
{
System.Guid guid = new Guid(objectGuid);
byte[] byteGuid = guid.ToByteArray();
string queryGuid = "";
foreach (byte b in byteGuid)
{
queryGuid += @"\" + b.ToString("x2");
}
return queryGuid;
}
答案 2 :(得分:2)
byte[] binaryData = objData as byte[];
string strHex = BitConverter.ToString(binaryData);
Guid id = new Guid(strHex.Replace("-", ""))
答案 3 :(得分:0)
System.DirectoryServices.DirectoryEntry
类具有用于此目的的属性Guid
- 无需通过Properties
访问objectGUID属性。
答案 4 :(得分:0)
尽管上面建议的手动转换有效,但有一种方法可以自动执行。
SQLiteConnectionStringBuilder
来配置一个将Guid理解为Guid的连接:var builder = new SQLiteConnectionStringBuilder("Data Source=./mydatabase.db") { BinaryGUID = true };
var connStr = builder.ToString();
return new SQLiteConnection(connStr);
这是官方的SQLite提供程序:https://www.nuget.org/packages/System.Data.SQLite.Core/
public class GuidTypeHandler : SqlMapper.TypeHandler<Guid>
{
public override Guid Parse(object value)
{
var valueAsBytes = (byte[])value;
return new Guid(valueAsBytes);
}
public override void SetValue(System.Data.IDbDataParameter parameter, Guid value)
{
var guidAsBytes = value.ToByteArray();
parameter.Value = guidAsBytes;
}
}
// And the registration in Startup.cs or equivalent:
SqlMapper.AddTypeHandler<Guid>(new GuidTypeHandler());