我有一个有两个字段的SQL Server数据库
First field value: 30303030303030333234
Second field value: 0000000324
现在,我告诉第一个值是十六进制的,但它对我来说看起来不像十六进制。破解起来并不难 - 第二个数字嵌入在第一个数字中,第二个数字则伴随着#34; 3"。所以第二个数字是10位数,第一个数字是20位数,加上10" 3" s。我可以使用字符串操作进行转换,但是我想知道第一个数字是否实际上是任何已建立的数字系统,或者是否有标准的转换方式?
答案 0 :(得分:4)
实际上,它看起来像完全像十六进制,但它的值仅限于存储在第二个字段中的小数字。
第一个字段只是第二个字段中字符的ASCII(或Unicode)代码点:
ASCII code
point (hex) Character
=========== =========
30 0
31 1
32 2
33 3
34 4
35 5
36 6
37 7
38 8
39 9
现在可能是他们选择将数据存储为文本字符串和十六进制字符串的正当理由,但我无法想到最好的信息。我的头在任何情况下,它似乎都违反了3NF(尽管有时也有正当理由这样做)。
关于如何转换它们,如果您在自己喜欢的搜索引擎中查找sqlserver ascii hex string
,网上会有大量文章(例如this one)。