SQL Server二进制(128)从小端转换为大端

11

如何在 SQL Server 中将 二进制(128) 从小端转换为大端?

1个回答

14

尝试像这样做:

declare @little binary(4)
set @little = 0x02010000

select
  @little [bigEndian],
  cast(reverse(@little) as binary(4)) [littleEndian]

输出:

bigEndian  littleEndian
---------- ------------
0x02010000 0x00000102

(1 row(s) affected)

1
如果我想要反转字节怎么办?不确定反转字节是否与从大端到小端的转换相同,反之亦然。如果我想要在小端模式下将0x00000102的字节反转为0x00000201,该怎么做呢? - topwik
在这种情况下,您需要注意值的长度:SELECT cast(reverse(cast(0x0102 AS BINARY(4))) AS BINARY(4))。 - milivojeviCH
1
你如何比较一个保存为varbinary(8)的@@dbts时间戳与基于小端架构的varbinary(8)?我相信@@dbts是大端的,因此在比较之前必须将其转换为小端。 - kTest
如果你有一个十六进制字符串,像1f100000,在调用reverse之前记得将其转换为BINARY类型。直接对字符串调用reverse()无法得到小端序。在我纠正了类型后,这个答案对我起了作用。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接