C'est une continuation de la dernière fois (▼).
--Je veux obtenir un nombre hexadécimal à 2 chiffres à partir d'un nombre décimal http://qiita.com/it_ks/items/55d43baa996860edaabb
Lorsqu'il y a un objet avec un nom japonais dans la scène Si vous le passez par FBX, il sera converti en le nom d'objet suivant.
FBXASC229FBXASC137FBXASC141FBXASC233FBXASC171FBXASC1702
oh! Fxxk!!
Les matériaux, les textures, les cibles de fusion, etc. seront les mêmes, donc ** Beaucoup ** Ce genre de chose est cultivé.
J'ai essayé comme suit.
from binascii import a2b_hex as a2b
def fbxasc_to_chr( target_str ):
return_list = []
stock = ''
for var in target_str.split( 'FBXASC' ):
#Ignorer si vide
if not var:
continue
#Non applicable si le premier caractère est un retour alphabétique_Ajoutez à la liste et passez au suivant.
if var[0].isalpha():
return_list.append(var)
continue
#Si le nombre de caractères est supérieur à 3, conversion int jusqu'au 3ème caractère
ex_digit = ''
if len(var)>3:
ex_digit = var[3:]
code_int = int(var[:3])
else:
code_int = int(var)
stock +=hex( code_int )
try:
return_list.append( a2b(stock.replace('0x','')).decode('utf8') )
except UnicodeDecodeError:
continue
#Réinitialiser lorsque le décodage et l'ajout sont terminés
stock = ''
if ex_digit:
return_list.append(ex_digit)
return ''.join(return_list)
Si vous regardez la chaîne FBX d'accrochage, vous pouvez voir que ** "FBX ASC" ** est inclus régulièrement.
Plus à dire
FBXASC + 0-255
C'est une combinaison de. Cela peut être décodé en tant que caractère lorsque plusieurs sont alignés en une seule unité (1 octet). Certains veulent dire que l'un peut être vrai et que trois peuvent l'être. C'est assez compliqué, je vais donc laisser les détails au commentaire UTF-8 @wikipedia. https://ja.wikipedia.org/wiki/UTF-8#.E6.96.87.E5.AD.97.E7.A8.AE (▲) D'après ce tableau, le nombre de symboles alphanumériques est de 1 et le nombre de «caractères d'Asie de l'Est / pleine largeur» est de 3. Certains des kanji de niveau 3 et 4 sont 4.
hex
Il ne peut pas être utilisé car il est 0-255, alors convertissez-le en hexadécimal. C'est l'article précédent que j'ai mentionné au début. J'ai décidé d'utiliser la fonction hexadécimale.
Il y a toujours un 0x
après la conversion, mais il est supprimé ensemble avant la conversion d'ASCII en binaire.
〜〜.replace('0x','')
Jusqu'à présent, il s'agit toujours d'une "chaîne de caractères composée de 0-9a-f". Convertissez-le en binaire. Utilisez la ** fonction a2b_hex ** du ** module binascii **.
--19.8. Binascii - Conversion entre données binaires et données ASCII https://docs.python.jp/3/library/binascii.html#binascii.a2b_hex Ici, il s'agit simplement de "a2b" lors de l'importation.
Après la conversion ASCII-> binaire, vous pouvez utiliser la ** méthode de décodage **, mais si l'adresse n'existe pas, une erreur de décodage se produira. Cette erreur est détectée et si une erreur de décodage se produit, elle est reportée à la suivante, concaténée et convertie à nouveau.
Ce serait rapide si toutes les chaînes de caractères étaient "FBXASC + 0-255" ...
Par exemple, "." Est réécrit en "FBXASC046" et apparaît. Les caractères alphanumériques ordinaires sont mélangés dans la chaîne de caractères tels quels. Donc, si vous divisez simplement avec FBXASC, vous obtiendrez "4 chiffres nombre * (il ne sera pas 0-255 largeur) *" ou "3 chiffres + caractère alphabétique * (passer en hexadécimal)". (La conversion Int ne peut pas être effectuée avant) * "sera inclus. J'ai décidé de mettre les chiffres supplémentaires dans une variable appelée ex_digit et de les concaténer plus tard.
De plus, si le nom de l'objet commence / se termine par des caractères alphanumériques, je ne sais pas combien d'éléments qui ne sont pas divisés par FBXASC seront ajoutés au début / à la fin, alors triez par si pour le faire ressembler à cela ('A').
Du coup, je n'ai pas l'impression qu'il y en aura plus (rires)
Je viens de remarquer qu'il y a une inquiétude mystérieuse que si le nombre 0-255 est inclus, il sera brouillé-je suis fatigué donc ça va: wink :: wink :: clin d'œil:
Tous les véhicules, y compris les japonais dans la scène, sont envoyés en Sibérie pour 25 roubles!