Ror*_*ory 5 .net c# sql-server encoding
SQL Server convert()函数可以将varbinary数据转换为具有以下编码的字符串:
每个二进制字符都转换为两个十六进制字符.如果转换表达式的长度大于data_type长度,则将被截断.
如果data_type是固定大小的字符类型,并且转换结果的长度小于data_type的长度; 空格被添加到转换表达式的右侧以保持偶数个十六进制数字.
字符0x将添加到样式1的转换结果的左侧.
例如,输出可能看起来像'0x389D7156C27AA70F15DD3105484A8461A2268284'.我怎样才能在C#中轻松做同样的事情?即使用相同类型的编码将byte []转换为字符串?
您可以使用BitConverter.ToString()和删除它用作分隔符的连字符:
"0x" + BitConverter.ToString(bytes).Replace("-", "")
Run Code Online (Sandbox Code Playgroud)
或者你可以使用LINQ和string.Concat()..Net 4版本:
"0x" + string.Concat(bytes.Select(b => b.ToString("X2")))
Run Code Online (Sandbox Code Playgroud)
在.Net 3.5中,您必须添加ToArray():
"0x" + string.Concat(bytes.Select(b => b.ToString("X2")).ToArray())
Run Code Online (Sandbox Code Playgroud)
这不遵循关于截断和添加空格的规范,但我不确定您是否需要它.并且应该很容易修改代码来做到这一点.
这两个版本都是可读性和性能第二.如果您需要非常快,可以使用StringBuilder并手动添加格式化的字节.
| 归档时间: |
|
| 查看次数: |
2352 次 |
| 最近记录: |