非常奇怪的字符串转换的有关问题(有图有真相)

非常奇怪的字符串转换的问题(有图有真相)
   s = Encoding.Unicode.GetString(EnBt)   ‘从字节enbt中读取字符串,最后两个字节的值是182, 216
   Bt = Encoding.Unicode.GetBytes(s)   ’转换成字符串后,再转换成字节,最后的两个字节变成253,255,其余和enbt的相同正常。这是怎么回事呢?

非常奇怪的字符串转换的有关问题(有图有真相)
请高手看看
------解决方案--------------------
谁告诉你 字节->字符串->字节 这个过程是始终不变的?
Unicode用2个字节存放编码  全部的2字节编码都是合法的Unicode。
Dim EnBt() As Byte = {182, 216}
Debug.Print(BitConverter.ToString(EnBt))

Dim s = Encoding.Unicode.GetString(EnBt)

Dim Bt() As Byte = Encoding.Unicode.GetBytes(s)
Debug.Print(BitConverter.ToString(Bt))

B6-D8
FD-FF


------解决方案--------------------
想了想用Encoding.UTF8.GetBytes也不是办法,
应该
Public Function EnCryptStr(ByVal s As String) As Byte()   '加密过程
        Dim Bt() As Byte = UTF8Encoding.UTF8.GetBytes(s)
        Dim i, j As Int32
        Dim EnBt(Bt.Length - 1) As Byte   '8位1111 1111=十进制数255
        For i = 0 To Bt.Length - 1
            j = i + 1
            EnBt(i) = Bt(i) Xor (j Mod 255)
        Next
        Return (EnBt)
    End Function

 Public Function DeCryptStr(ByVal Bt() As Byte) As String  '解密过程
        Dim i, j As Int32
        Dim DeBt(Bt.Length - 1) As Byte
        For i = 0 To Bt.Length - 1
            j = i + 1
            DeBt(i) = Bt(i) Xor (j Mod 255)
        Next
        Return UTF8Encoding.UTF8.GetString(DeBt)
    End Function

------解决方案--------------------
自己写个加解密的算法好了,这样格式转换不靠谱。
最简单的例如什么:置换加密、位移加密
反正你自己琢磨个可逆的步骤,应该还是有效果。不要这么干