32位十六进制数字串输出

时间:2015-05-18 03:43:32

标签: vb.net hex check-digit

嘿所有我有以下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"。

2 个答案:

答案 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)