ReadUTF() encode le résultat décimal en UTF-8 ou pas?
Parce que sur OverEdge, on a :
Public Overrides Function ReadString() As String
Dim ByteArray() As Byte = MyBase.ReadBytes(ReadUInt16())
Return System.Text.Encoding.UTF8.GetString(ByteArray)
End Function
GetString fait quoi? Il convertit juste l'array en string?
Du genre si on avait :
------------------------
ByteArray | Valeur
------------------------
0 | 35
1 | 58
2 | 74
------------------------
Est-ce que le résultat serait "355875" ou bien est-ce qu'il fait une quelconque conversion?
Ensuite, la fonction UTF8, qu'est-ce qu'elle fait?
Sur AutoIt, j'ai une fonction BinaryToString qui, contrairement à ce qu'elle annonce, convertit de l'hexadécimal à décimal, et si je lui ajoute le flag 4, en encodage UTF-8.
Donc est-ce que je peux traduire ton
Return System.Text.Encoding.UTF8.GetString(ByteArray)
Par un
Return BinaryToString(StringHex, 4)
Avec mon exemple, si StringHex = "64 34 72 6B 76 34 6E", alors BinaryToString(StringHex, 4) = "d4rkv4n". C'est ce qu'on veut, non? Parce qu'en fait j'ai converti en chaîne de caractères, mais il ne faut pas le décimal correspondant à chaque caractère?
Et donc convertir chaque hexa en caractère, puis en décimal?
J'obtiendrai donc :
$string = "d4rkv4n"
$bin = StringToBinary($string, 4) ;renvoie 0x6434726B76346E
$recon = BinaryToString($string, 4) ;renvoie d4rkv4n
$asciiArray = StringToASCIIArray($recon) ;renvoie un tableau
$arrayToString = _ArrayToString($asciiArray) ;renvoie 100|52|114|107|118|52|110