traditonal 4 비트 16 진수는 매우 직접적입니다. 16 진수 문자열을 정수로 (값이 FHexString이라는 필드에 저장되어 있다고 가정) :
CONVERT(BIGINT,CONVERT(varbinary(4),
(SELECT master.dbo.fn_cdc_hexstrtobin(
LEFT(FMEID_ESN,8)
))
))
Integer to Hex String (값이 FInteger라는 필드에 저장되어 있다고 가정) :
(SELECT master.dbo.fn_varbintohexstr(CONVERT(varbinary,CONVERT(int,
FInteger
))))
특히 인텔 시스템에서 레지스터 공유를 유발하는 비트 크기를 사용하기 시작하면 인텔의 리틀 엔디안 특성으로 인해 레지스터의 높음 및 낮음, 왼쪽 및 권한이 서로 바뀝니다. 예를 들어 varbinary (3)를 사용할 때 6 자 16 진수에 대해 이야기하고 있습니다. 이 경우 비트는 오른쪽에서 왼쪽 "54,32,10"으로 다음 인덱스로 쌍을 이룹니다. 인텔 시스템에서는 "76,54,32,10"이 예상됩니다. 8 개 중 6 개만 사용하므로 스왑을 직접 수행해야합니다. "76,54"는 귀하의 왼쪽으로, "32,10"은 귀하의 오른쪽으로 간주됩니다. 쉼표는 고점과 저점을 구분합니다. 인텔은 최고와 최저를 바꾼 다음 왼쪽과 권리를 바꿉니다. 그래서 변환을하려면 ... 한숨, 예를 들어 스스로 바꿔야합니다.
(SELECT master.dbo.fn_replvarbintoint(
CONVERT(varbinary(3),(SELECT master.dbo.fn_cdc_hexstrtobin(
RIGHT(FHex8,2)+
LEFT(RIGHT(FHex8,4),2)+
LEFT(RIGHT(FHex8,6),2)
)))
))
조금 복잡해서 8 자 16 진수 (varbinary (4))로 변환을 유지하려고합니다.
요약하면 이것은 귀하의 질문에 대한 답변입니다. 종합적으로.