嘿所有我有以下32个十六进制数字字符串:
0x80000000000000003F64000000000000
当我需要将这个数字放在上面并用它查找某些内容时,我需要以这种格式搜索它:
0000-0000-3F64-0000-S-0000-0000-R
搜索所需的官方格式如下所示:
格式:
NNNN-NNNN-NNNN-NNNN-X
or
NNNN-NNNN-NNNN-NNNN-X-NNNN-NNNN-Y
or
NNNN-NNNN-NNNN-NNNN
其中N是十六进制数字,X和Y是校验位。
16个十六进制数字后跟一个校验字符(使用阿拉伯数字0到9和字母A到Z),然后是8个十六进制数字版本段,后跟一个校验字符(使用阿拉伯数字0到9和字母A到Z)。
在ISO 15706-2附录D中定义.ISAN。
ROOT : 0000-0000-3F64
4位十六进制值的树段用连字符分隔" - "
EpisodeOrPart : 0000
一段 4位十六进制值。
Check1 : S
一位数由0到9的十进制值或从A到Z的大写字母组成。
版本: 0000-0000
两段 4位十六进制值,用连字符分隔" - "。
Check2 : R
一位数由0到9的十进制值或从A到Z的大写字符组成。
而且我不确定如何将我所拥有的内容转换为所需的格式,以便任何帮助都会很棒!
注意:" -S"和" -R"可以删除。这些是随机计算机生成的算法,如上所示,如果您没有它们,则在搜索中不需要这些算法。所以我真的只想获得这样的格式" 0000-0000-3F64-0000-0000-0000"。
答案 0 :(得分:0)
不是100%确定你想要什么,但是......
此函数从头开始删除0x
:
Private Function format(ByVal str As String) As String
str = str.Substring(10)
For i As Integer = 20 To 4 Step -4
str = str.Insert(i, "-")
Next
Return str
End Function
从0000-0000-3F64-0000-0000-0000
0x80000000000000003F64000000000000
对于只有32个字符的十六进制而没有0x
前缀,此函数:
Private Function format(ByVal str As String) As String
str = str.Substring(8)
For i As Integer = 20 To 4 Step -4
str = str.Insert(i, "-")
Next
Return str
End Function
从0000-0000-3F64-0000-0000-0000
80000000000000003F64000000000000
答案 1 :(得分:0)
根本不清楚你想要什么...... 8去哪儿了?
这里有一些可能有帮助的代码......
'32 hex digits = 16 bytes (128 bits)'
Dim s As String = "0x80000000000000003F64000000000000"
'simple reformat'
Dim s_sf As String = s.Substring(10, 4) & "-" & s.Substring(14, 4) & "-" & s.Substring(18, 4) & "-" & s.Substring(22, 4) & "-S-" & s.Substring(26, 4) & "-" & s.Substring(30, 4) & "-R"
MsgBox(s_sf)
'Convert hex string to byte 0x3F = 63 decimal
Dim b As Byte = Convert.ToByte("3F", 16)
MsgBox(b.ToString)
'Convert byte to Hex string 63 decimal = 0x3F
Dim s_hex As String = Hex(63)
MsgBox(s_hex)