Habrã®çŽ¹ä»
以äžã®ããã¹ãã¯ãå®éã«ã¯ãASN.1 in simple wordsããšããèšäºã®æåã®2ã€ã®ç« ã§ãã èšäºèªäœã¯Habrã®æšæºã§ã¯ååã«å€§ããããããã®ãªãœãŒã¹ã§ã¯åçŽåã®ã³ãŒãã£ã³ã°ã«é¢ããç¥èãå¿ èŠãã©ãããæåã«ç¢ºèªããããšã«ããŸããã èŠèŽè ãè¯å®çã«åå¿ããå Žåãç§ã¯ä»ã®ãã¹ãŠã®ç« ãå ¬éãç¶ããŸãã
ã¯ããã«
ãã§ã«ããªãé·ãæéã«ããã£ãŠãASN.1ã«å¯ŸåŠããå¿ èŠããããŸãã æå·åããã°ã©ã ã®äœæãšéä¿¡ã®äž¡æ¹ã®åéã§åãããšãã§ããã®ã¯å¹žéã§ããã äž¡æ¹ã®åéã§ãASN.1æšæºã¯åœåéåžžã«ç©æ¥µçãã€æ®éçã«äœ¿çšãããŠããŸãã
ãã ããæå·åããã°ã©ã ãäœæããããã»ã¹ãããã³é»æ°éä¿¡æ¥çåãã®ããã°ã©ã ãäœæããããã»ã¹ã§ãç§ã¯çµ¶ããåãæèŠã«äŒããŸãã-ASN.1ã¯è€éã§ç解ã§ããªã圢åŒã§ããããããšã³ã³ãŒã/ãã³ãŒãã«ãµãŒãããŒãã£ã®ã³ã³ãã€ã©ã䜿çšããããšããå§ãããŸãïŒãããŠæã éä¿¡ãããæ å ±ã®ä»ã®ã³ãŒãã£ã³ã°æšæºã§ãããïŒã
ãœãããŠã§ã¢éçºè ã®å€§å€æ°ãASN.1æšæºãå°é£ãšèããç¶æ³ãçºçããçç±ã®1ã€ã¯ããã®åé¡ã«é¢ããæžç±ã®äžè¶³ã§ãã ã¯ãããã®æšæºã®ç±ç·ããæ代ãå€ãã®èªç±ã«é åžãããã³ã³ãã€ã©ãŒãããã³ããŸããŸãªèšäºã«ãããããããéåžžã«å°æ°ã®æžç±ïŒãŸãã¯ã€ã³ã¿ãŒãããäžã®èšäºããïŒããããããã§ã¯ç°¡åã§ç解å¯èœãªèšèªã§ãå€æ°ã®äŸããããASNåçŽåã®ãšã³ã³ãŒãã®åé¡ãæããã«ãããŸããã ã
ãã®ç¶æ³ãä¿®æ£ããããã«ããã®èšäºã¯ASN.1ã³ãŒãã£ã³ã°ã®è€éããç解ããåã«ãã®åœ¢åŒã«ééããããšã®ãªã人ãå©ããäžçš®ã®ããã¥ã¢ã«ãšããŠæ©èœããŸãã ãã®èšäºã§ã¯ãREALãINTEGERãOBJECT IDENTIFIERãããããçš®é¡ã®æååãBOOLEANãNULLãSEQUENCEãSETãªã©ãåçŽïŒéè€åïŒã¿ã€ãã®ãšã³ã³ãŒãã®ã¿ãç¶²çŸ ããŠããŸãã ãã®èšäºã§ã¯ãåã¿ã€ãã®ã³ãŒãã£ã³ã°ã®åŸ®åŠãªç¹ã«ã€ããŠè©³çŽ°ã«èª¬æãããã®ã¿ã€ãã®ã³ãŒãã£ã³ã°ã®åŸ®åŠãªç¹ã«ã€ããŠèª¬æãã詳现ãªäŸã瀺ããŸãã ãã®èšäºã«æ·»ä»ãããŠããå¥ã®ãã¡ã€ã«ã«ã¯ãèšäºã®ãã¹ãŠã®äŸã圢æããC ++ã³ãŒãããããŸãã ãŸãããã®ãã¡ã€ã«ãšäŸã§ã¯ããã®èšäºã®ãã¬ãŒã ã¯ãŒã¯ã§èæ ®ãããŠããªãè¿œå è³æãæäŸãããŠããŸãã ãã®èšäºã®ãã¹ãŠã®è³æã¯ã2008幎ã®ææ°ã®ASN.1èŠæ Œã«åºã¥ããŠããŸãããã®äžäœèŠæ Œã¯ãã¹ãŠããªã³ã¯http://www.itu.int/rec/T-REC-X.680-X.693-ãã1ã€ã®ãã¡ã€ã«ã«ããŠã³ããŒãã§ããŸãã 200811-I / ja ãããç¹ã«æèšãããŠããªãå Žåãèšäºã«èšèŒãããŠããäŸã¯ãASN.1 BERèŠæ ŒïŒBasic Encoding RulesïŒã®ã¿ã€ãããšã³ã³ãŒãããŸãã
ã»ãšãã©ã®ASN.1ããã¥ã¢ã«ããã³æžç±ã§ã¯ãã³ãŒãã£ã³ã°ã®ç 究ã¯è€éã§ã¯ãªãæãåçŽãªã¿ã€ãããå§ãŸããæãé£ããã¿ã€ãã§çµãããŸãã ãã®èšäºã§ã¯ãé åºã¯ãŸã£ããéã«ãªããŸããæåã«èªè ã«è€éãªåã®ã³ãŒãã£ã³ã°ãåŠç¿ããããã«äŸé ŒããŸãããã®åŸãåè«ã®ç 究ã«åŸã ã«é²ã¿ãŸãã ããã«ããããã€ãè€éãªã¿ã€ãã®ã³ãŒãã£ã³ã°æ¹æ³ãåŠã³ãããåçŽãªã³ãŒãã£ã³ã°æ¹æ³ããã°ããç°¡åã«ç解ã§ããããã«ãªããŸãã
第1ç« äžè¬çãªASN.1ãšã³ã³ãŒãã£ã³ã°ã«ãŒã«
ãŸããASN.1圢åŒã§ã®ãšã³ã³ãŒãã®åºæ¬ã®ããã€ããæ確ã«ããå¿ èŠããããŸãã
ãŸãããã®æšæºãäœæãããçç±ã説æããŸãããã äžçã«ã¯ããŸããŸãªã³ã³ãã¥ãŒã¿ãŒããããŸãã ããã«ããããã®ã³ã³ãã¥ãŒã¿ãŒã§ããŒã¿ãè¡šãããã®å€ãã®æšæºããããŸãã ASN.1ã¯ããã®æšæºãç解ããŠããä»»æã®ã³ã³ãã¥ãŒã¿ãŒãç解ã§ããä»»æã®æ å ±ãèšè¿°ããããšãå¯èœã«ããäžè¬çãªæšæºã®äžçš®ãšããŠäœæãããŸããã ãããã£ãŠãASN.1æšæºã§ã¯ãåã ã®æ å ±ã®ã¬ãã«ãçžäºã®é 眮ã«ãããŠããå³å¯ãªãšã³ã³ãŒãèŠåã課ãããŠããŸãã ããã«ãASN.1æšæºã¯ãããã¹ãã®åœ¢åŒã§ã¯ãªãããã€ããªã·ãŒã±ã³ã¹ã®åœ¢åŒã§æ å ±ããšã³ã³ãŒãããããšãèšããªããã°ãªããŸããã ããŸããŸãªã³ãŒãã£ã³ã°åœ¢åŒããã§ã«ç»å ŽããŠãããããã¹ãïŒXMLïŒã®åœ¢åŒã§ããŒã¿ã衚瀺ã§ããŸããããããã®åœ¢åŒã®æŠèŠã¯ãã®èšäºã®ç¯å²å€ã§ãã ããã§ã¯ãæãé£ãããã€ããªãšã³ã³ãŒãïŒASN.1 BER圢åŒ-åºæ¬ãšã³ã³ãŒãã«ãŒã«ïŒã®ã¿ãæ€èšããŸãã
ASN.1圢åŒã§ãšã³ã³ãŒããããããŒã¿ã¯ãã®ã£ãããªãã§1ã€ãã€ç§»åããäžé£ã®ãã€ãïŒãŸãã¯ããªã¯ããããïŒã§ãã ASN.1ã§ãšã³ã³ãŒããããã·ãŒã±ã³ã¹ã¯ãéä¿¡åç·ãä»ããŠéä¿¡ããããã¡ã€ã«ã«ä¿åãããŸããASN.1ã®ãšã³ã³ãŒããããæ å ±ãããã¯ã«ã¯ããã®å šé·ãšå 容ã®å¿ èŠãªèšè¿°ãæ¢ã«å«ãŸããŠããŸãã
ãšã³ã³ãŒãããããããã¯ã«å«ãŸããæ å ±ã®ãã®ãããªèšè¿°ãå¯èœã«ããããã«ãåãããã¯ã®ç¹å®ã®äžè¬çãªæ§é ã䜿çšãããŸãã åãããã¯ã«ã¯å°ãªããšã3ã€ã®å¿ èŠãªéšåãå«ãŸããŸãïŒå Žåã«ãã£ãŠã¯ãæåã®2ã€ã®ãããã¯ã®ã¿ãæ®ããŸããããããã®å Žåã«ã€ããŠã¯åå¥ã«èª¬æããŸãïŒã
- ãããã¯èå¥åã®äžéšïŒæ倧æ°ãªã¯ãããïŒã
- ãããã¯ã®å šé·ã®äžéšïŒæ倧æ°ãªã¯ãããïŒã
- ãã®ãããã¯ãéã¶å®éã®å€ãå«ãéšåïŒæ倧æ°ãªã¯ãããïŒã
ããã«ããªãã·ã§ã³ã®4çªç®ã®éšåïŒãããã¯å€ã®çµããã®ãªã¯ãããã®äžéšïŒè€æ°ã®ãªã¯ãããïŒïŒãååšããå ŽåããããŸãã ãã®éšåã«ã€ããŠã¯åŸã§èª¬æããŸãã
ASN.1ã§ãšã³ã³ãŒãããããããã¯ã®åéšåã®èª¬æã«æ»ããŸãã
ãããã¯èå¥åéšåã¯ãå°ãªããšã1ã€ã®ãªã¯ãããã§æ§æãããŸãã ãã®æåã®ãªã¯ãããã®åœ¢åŒã¯å³å¯ã«åºå®ãããŠããŸãã
- ããã8ããã³7ïŒéåžžã¯å·Šç«¯ã«æžã蟌ãŸããæäžäœãããïŒã¯ãçŸåšã®ãããã¯ã®ãããããã¯ã©ã¹ãããšã³ã³ãŒãããŸãã
- çŸåšã®ãããã¯ã«1ã€ã®å€ã®ã¿ã«é¢ããæ å ±ãå«ãŸããå Žåã¯ããã6ã0ã«èšå®ããè¿œå ã®ASN.1ãšã³ã³ãŒããããã¯ããããã¯å€å ã«å«ãŸããå Žåã¯1ã«èšå®ããå¿ èŠããããŸãã
- ããã5ãã1ã¯ãç¹å®ã®ãããã¯ã®å®éã®ã¿ã€ãèå¥åããšã³ã³ãŒãããŸãã
ãããã¯ã®ã¿ã€ãèå¥åã0ã30ã®ç¯å²ã«ããå Žåãèå¥ãããã¯ã¯1ãªã¯ãããã®ã¿ã§æ§æãããŸãã ãããã¯ã®ã¿ã€ãèå¥åã®å€ã31以äžã®å Žåãããã5-1ã§ãã¹ãŠ1ãèšå®ãããåŸç¶ã®ãªã¯ãããã§ç®çã®çªå·ããšã³ã³ãŒããããŸãã ã¿ã€ãèå¥åçªå·ã¯ã笊å·ãªãæŽæ°ãšããŠãšã³ã³ãŒããããããŒã¹128ã§å±éãããŸãããããã¯ã®ã¿ã€ãèå¥åããšã³ã³ãŒãããåãªã¯ãããã§ã¯ãæåŸã®æåŸã®ãªã¯ããããé€ããæäžäœãããã¯1ã§ãªããã°ãªããŸããïŒãšã³ã³ãŒãæ¹æ³ã¯ãOBJECTã®SIDã®ãšã³ã³ãŒãæ¹æ³ãšå®å šã«äžèŽããŸãïŒ IDENTIFIERã以äžãåç §ïŒã
ãããã¯ã®å šé·ã®äžéšã«ã¯ããããã¯ã«å«ãŸããå€ã®é·ãããšã³ã³ãŒãããå°ãªããšã1ãªã¯ããããå«ãŸããŸãïŒã€ãŸãããšã³ã³ãŒããããå€ãå«ããããã¯ã®é·ãã®ã¿ãå«ãŸãããšã³ã³ãŒãããããããã¯å šäœã®å šé·ãšãããã¯èå¥åããã³å šé·ã®äžéšã¯å«ãŸããŸããïŒïŒ æãåçŽãªå Žåã®ãããã¯ã®é·ãã¯ã笊å·ãªãæŽæ°ãšããŠãšã³ã³ãŒããããããŒã¹128ã§æ¡åŒµãããŸãããã®å Žåã®ããã8ïŒæäžäœãããïŒã¯è¿œå ã®ãã©ã°ã§ãã ãšã³ã³ãŒãããããããã¯ã®å šé·ã128ãè¶ ããå Žåããããã¯ã®å šé·ã®äžéšã®æåã®ãªã¯ãããã®é«äœãããã¯1ã«èšå®ããã次ã®7ãããã¯åŸç¶ã®ãªã¯ãããã®æ°ã®ç¬Šå·ãªãæŽæ°å€ããšã³ã³ãŒãããå¿ èŠããããŸããããã«ããããããã¯ã®å®éã®å šé·ããšã³ã³ãŒããããŸãã
ããšãã°ããããã¯ã®å šé·ãL = 201ã®å Žåã2ã€ã®ãªã¯ãããã䜿çšããŠãšã³ã³ãŒããããŸãã
- 1000 0001ïŒ81ïŒ
- 1100 1001ïŒC9ïŒ
ãããã¯ã®å šé·ãæ瀺çã«èšå®ããããšã«å ããŠããããã¯ããã³ãŒãããããã»ã¹ã§ç¹å®ã®ãããã¯ã®çµãããçŽæ¥æ±ºå®ããããšãã§ããŸãã ããã¯ããããã¯ã®åæã³ãŒãã£ã³ã°ãæ£ç¢ºã«ããã€ã®ãªã¯ããããå«ãããæ確ã§ãªãå Žåã«éèŠã§ãïŒã¹ããªãŒã ã³ãŒãã£ã³ã°ïŒã ãã®å Žåããããã¯ã®å šé·ã®äžéšã®æåã®ãªã¯ãããã¯80ã§ãªããã°ãªããŸããïŒæäžäœããã8ã¯1ã§ãä»ã®ãã¹ãŠã®ãããã¯0ã§ãïŒã ãããã¯å šäœã®çµäºã¯ã2ã€ã®é£ç¶ãããªã¯ããã00 00ã®å€ã®ãããã¯å ã®ååšã«ãã£ãŠæ±ºå®ãããŸãã
第2ç« REALãšã³ã³ãŒãã£ã³ã°
ã¿ã€ãã®äžè¬çãªèª¬æïŒ
- ã¿ã°ã¯ã©ã¹-UNIVERSALïŒ00ïŒ;
- ã¿ã°çªå·-9;
- å€ãšã³ã³ãŒã圢åŒã¯ããªããã£ãïŒéæ§æ圢åŒïŒã§ãã
ãŸããå®éã®æµ®åå°æ°ç¹æ°ã«é¢ããå°ãã®çè«ã æµ®åå°æ°ç¹æ°ã¯éåžžãä»®æ°ãåºæ°ãææ°ã®3ã€ã®éšåã§è¡šãããŸãã ããã¯ãåŒREAL =ïŒä»®æ°ïŒ*ïŒåºæ°ïŒ ïŒææ°ïŒã䜿çšããŠããç°¡åã«èª¬æã§ããŸãã ãã®åŒã䜿çšããŠéåžžã®10é²æ°ãè¡šãå ŽåãREAL =ïŒä»®æ°ïŒ* 10 ïŒææ°ïŒãåŸãããŸãã ASN.1ã®ä»®æ°ãšææ°ã®äž¡æ¹ãæ£ãšè² ã®äž¡æ¹ã«ãªãå¯èœæ§ããããããä»»æã®ç¬Šå·ã§ä»»æã®å€§ããªå€ãšä»»æã®å°ããªå€ãè¡šãããšãã§ããŸãã
ASN.1ã®åŸæ¥ã®ãã·ã³ããŒã¹ã®æµ®åå°æ°ç¹æ°ã®è¡šçŸïŒIEEE 754ïŒãšã¯ç°ãªããREALã¿ã€ãã¯ä»®æ°ãšããŠå®è³ªçã«ãµã€ãºãç¡å¶éã§ãïŒä»®æ°ã¯å®è³ªçã«ç¡å¶éã®æ°ã®ãªã¯ãããã§æ§æãããä»»æã®å€§ããªæ°ãè¡šãããšãã§ããŸãïŒææ°ã®ãµã€ãºïŒææ°ã®å€ã¯ãä»»æã®æ°ã®ãªã¯ãããã§æ§æããããšãã§ããŸãïŒã ã³ãŒãã£ã³ã°ã®å¶éã¯ãããŒã¹ãã®å€ã«ã®ã¿èª²ãããŸãããããŒã¹ããšããŠéžæã§ããã®ã¯ãæ°åã®10ã2ã8ããŸãã¯16ã®ã¿ã§ãã
REALã¿ã€ãã®ãšã³ã³ãŒãã«ã¯ã次ã®3ã€ã®ã¡ã€ã³ãããã¯ã䜿çšãããŸãã
- ãµãŒãã¹æ å ±ãªã¯ãããã
- æ°å€ã®ææ°ã
- ä»®æ°ã®å€ã
å ¬åŒæ å ±ãªã¯ãããã«ã¯ã次ã®æ å ±ãå«ãŸããŠããŸãã
- ããã8ãšããã7ïŒå·Šç«¯ïŒã®å¯èœãªçµã¿åããïŒ
- ããã8 = 1-ãã€ããªãšã³ã³ãŒãã£ã³ã°ãé©çšãããŸãïŒããŒã¹2ã8ããŸãã¯16ã®ããããã«ïŒã
- ããã8 = 0ããã³ããã7 = 0-10é²ãšã³ã³ãŒããé©çšãããŸãïŒå®éã«ã¯ãæ°å€ã®æšæºæååè¡šçŸã®ãšã³ã³ãŒãã以äžãåç §ïŒã
- ããã8 = 0ããã³ããã7 = 1-ãšã³ã³ãŒããããå€ã¯ãç¹å¥ãªå€ãïŒNaNãINFINITEãªã©ïŒãŸãã¯ãšã³ã³ãŒããããå€ã¯ã-0ãããšã³ã³ãŒãããŸãã
- ããã7ã¯ããšã³ã³ãŒããããæ°å€ãæ£ã®å Žå0ã«èšå®ããããšã³ã³ãŒããããæ°å€ãè² ã®å Žå1ã«èšå®ãããŸãã
- ããã6ãš5ã®çµã¿åããã¯ããã€ããªãšã³ã³ãŒãã£ã³ã°ããŒã¹ãå®çŸ©ããŸãã
- 00-ãšã³ã³ãŒããããæ°å€ã¯åºæ°2ã«é 眮ãããŸãã
- 01-ãšã³ã³ãŒããããçªå·ã¯8ã«åºã¥ããŠé 眮ãããŸãã
- 10-ãšã³ã³ãŒããããçªå·ã¯16ã«åºã¥ããŠé 眮ãããŸãã
- 11-å°æ¥ã®å¯èœãªå€æŽã®ããã«äºçŽãããŠããŸãã
- ããã4ããã³3ã¯ããã€ããªã³ãŒãã®ãã¹ã±ãŒãªã³ã°ä¿æ°ãïŒFã以äžãåç §ïŒã®å€ããšã³ã³ãŒãããŸãã
- ããã2ããã³1ã¯ããšã³ã³ãŒããããæ°å€ã®ææ°ã®åœ¢åŒããšã³ã³ãŒãããŸãã
- 00-次ã®ãªã¯ãããã¯ãææ°ã®å€ããšã³ã³ãŒãããå¯äžã®ãªã¯ãããã§ãã
- 01-次ã®2ãªã¯ãããã¯ææ°ã®å€ããšã³ã³ãŒãããŸãã
- 10-次ã®3ãªã¯ãããã¯ææ°ã®å€ããšã³ã³ãŒãããŸãã
- 11-次ã®ãªã¯ãããã«ã¯ææ°ã®å€ããšã³ã³ãŒãããåŸç¶ã®ãªã¯ãããã®æ°ãå«ãŸãïŒãªã¯ãããã®æ°ã¯éåžžã®ç¬Šå·ãªãã®æ°ãšããŠãšã³ã³ãŒãããïŒåœç¶ãæ£ã®å€ã®ã¿ãèš±å¯ãããŸãïŒãåŸç¶ã®ãªã¯ãããã¯ææ°ã®å€ããšã³ã³ãŒãããŸã;
æ°å€ã®ææ°å€ã¯ãä»»æã®æ°ã®ãªã¯ãããã§æ§æãããæŽæ°ã«ãã£ãŠãšã³ã³ãŒããããŸãã ããã§ãå°ããªäœè«ãè¡ããæ£ã®æŽæ°ãšè² ã®æŽæ°ã®äž¡æ¹ãASN.1ã§ã©ã®ããã«ãšã³ã³ãŒããããããæ£ç¢ºã«äŒããå¿ èŠããããŸãã
ASN.1ã®æ£ã®æŽæ°ã¯ãåºæ°256ã®å¯Ÿå¿ããå解床ãæã€ãã€ã³ããã¯ã¹ãã®ã·ãŒã±ã³ã¹ãè¡šããŸããã€ãŸããéåžžã®10é²åœ¢åŒã§è¡šãããæŽæ°ã¯ãŸãåºæ°256ã«å±éããã察å¿ãã次æ°256ã®ã€ã³ããã¯ã¹ãã³ãŒãã£ã³ã°ãªã¯ããããšããŠæžã蟌ãŸããŸãã 説æã®ããã®äŸãšããŠãçªå·32639ã䜿çšããŸãããã®çªå·ã¯ãããŒã¹256ã§32639 10 = 127 * 256 1 + 127 * 256 0ã®ããã«å解ãããŸã ã ãããã£ãŠã察å¿ãã256ã®ã¹ãä¹ã®ä¿æ°ã¯ïŒ127ã127ïŒã«çãããªããŸãã 10é²å€127ããããã·ãŒã±ã³ã¹ãšããŠè¡šããšã127 = 0111 1111ã«ãªããŸãããŸãã¯ã4ãããã®åã°ã«ãŒãã0ããFãŸã§ã®æ°ã§è¡šããšã127 = 0111 1111 = 7Fã«ãªããŸãã ãããã£ãŠãåæçªå·32639ã¯2ãªã¯ãããã®ã·ãŒã±ã³ã¹7F 7Fã«ãã£ãŠãšã³ã³ãŒããããŸãã
äžèšã®æ¹æ³ã¯ãä»»æã®å€§ããªæ£ã®æŽæ°ããšã³ã³ãŒãã§ããŸãã ãã ããè² ã®æŽæ°å€ã®ã³ãŒãã£ã³ã°ã«ã€ããŠã¯ã©ãã§ããããïŒ å€ããšã³ã³ãŒãããããã®ç¹å¥ãªæé ã䜿çšãããã®ã¯ãè² ã®æŽæ°ããšã³ã³ãŒãããããã§ãã
ããšãã°ãåã³çªå·32639ãååŸããŸãããä»åºŠã¯è² ïŒ-32639ïŒã«ããŸãã è² ã®æŽæ°ã®ãšã³ã³ãŒãã¯ãå®éã«ã¯1ã€ã§ã¯ãªã2ã€ã®æŽæ°å€ïŒã¡ã€ã³å€ãšã¡ã€ã³å€ããæžç®ããå¿ èŠãããä»ã®æŽæ°å€ïŒããšã³ã³ãŒããããããã«èšèšãããŠããŸãã ã€ãŸãããã³ãŒãããŠãšã³ã³ãŒããããè² ã®æ°ãååŸããå ŽåãçµæïŒx-yïŒãèšç®ããã ãã§ãã ãã®æãåçŽãªåŒãããããããã«ããxãã®å€ããyãã®å€ãããå°ããå Žåãçµæã¯ãŒããããå°ãããªããŸãïŒã€ãŸããè² ã®æ°ïŒã
äžèšã®2ã€ã®çªå·ïŒã¡ã€ã³çªå·ãšã¡ã€ã³ããæžç®ããå¿ èŠãããçªå·ïŒã¯ã次ã®èŠåã«åŸã£ãŠåœ¢æãããŸãã
- ASN.1ã§ãšã³ã³ãŒããããçªå·ãNãããã®ã·ãŒã±ã³ã¹ã§æ§æããŸãã
- 次ã«ãã¡ã€ã³æ°ããæžç®ãããæ°ã¯ãNããããããªãæ°ãšããŠåœ¢æãããŸãããæäžäœãããïŒå·Šç«¯ã®ãããïŒãé€ããã¹ãŠã®ãããã¯0ã«èšå®ãããŸãã
- ã¡ã€ã³çªå·ãNãããã§æ§æãããŸããããã®æäžäœãããã¯0ã«èšå®ãããŸããæ®ãã®ãã¹ãŠã®ãããã®å€ã¯ãå ã®ãšã³ã³ãŒããããçªå·ã®å¯Ÿå¿ãããããã«å®å šã«å¯Ÿå¿ããŸãïŒå€æŽãããŸããïŒã
äŸïŒ-32639ïŒããç¹å®ã®çªå·ã®ã³ãŒãã£ã³ã°ã«ç§»ããŸãããã ã¡ã€ã³ã®æ°å€ããæžç®ãããæ°å€ã¯ã¡ã€ã³ã®æ°å€ããã倧ãããªããã°ãªããªããããè² ã®æŽæ°ã®ãšã³ã³ãŒãã¯ããã®æžç®ãããæ°å€ã®éžæããæ£ç¢ºã«å§ãŸããŸãã ã«ãŒã«ã«åŸã£ãŠããã®æžç®ã¯256ã«å解ãããå¿ èŠãããããã察å¿ãã256ã®çŽ¯ä¹ã®ã€ã³ããã¯ã¹ãè¡šããã¹ãŠã®ããããæåã®ããããé€ããŠ0ã«ãªããããæžç®ãããå¯èœæ§ã®ããæ°ã¯80ã®å è¡ãªã¯ãããïŒ1000 0000ïŒãšããã€ãã®ãªã¯ãããã§ãããã«ç¶ã00ã ã€ãŸããæ§é€å¯Ÿè±¡ãšããŠäœ¿çšã§ããã®ã¯ã80ïŒ128 10 ïŒã80 00ïŒ32768 10 ïŒã80 00 00ïŒ8388608 10 ïŒãªã©ã§ãã çªå·ã-32639ãããšã³ã³ãŒãããã«ã¯ããšã³ã³ãŒããããŠããã¢ãžã¥ã©ãã«çªå·ããã倧ããïŒã€ãŸããçªå·32639ããã倧ããïŒæåã®é©åãªæžç®æžã¿ã®ãã®ãéžæããŸãã æãè¿ãçªå·ã¯32768ïŒ80 00ïŒã§ãã
ããã§ãã¡ã€ã³çªå·ã®å€ãååŸããå¿ èŠããããŸãã ãããè¡ãã«ã¯ãåã³æãåçŽãªåŒx-32768 = -32629ã解ãå¿ èŠããããŸãã æ¹çšåŒã解ããšãå€x = 129 = 129 * 256 0ãåŸããããããæ°å€129ã¯1ãã€ã81 256ã§ãšã³ã³ãŒããããŸãã ã«ãŒã«ããã詳ããèŠããšãã¡ã€ã³ã®ããããšæžç®ãããæ°å€ã®ãããæ°ãçãããªããã°ãªããªãããšãç解ã§ããããã§ãã æžç®ã®ãããæ°ã¯16ã§ããåæã«ãã¡ã€ã³æ°ã®ãããæ°ã¯8ã ãã§ããã¡ã€ã³æ°ã®ãããæ°ãå¢ããã«ã¯ãæäžäœãããã«éææãªãŒããè¿œå ããŸãã 次ã«129 = 0 * 256 1 + 129 * 256 0ãåŸããããããã¡ã€ã³çªå·ã¯2ãªã¯ãããã§ïŒ00 81ïŒãšããŠãšã³ã³ãŒããããŸãã çµæã®2ãªã¯ãããã®ããŒã¹çªå·ã®æåã®ãããã1ã«èšå®ãããšãã-32639ãããšã³ã³ãŒãããæçµçªå·ãåŸãããŸãã ãã®çªå·ã¯ã2ã€ã®ãªã¯ããã80 81ã§ãšã³ã³ãŒããããŸããããäžåºŠ-ã¡ã€ã³çªå·ã¯ããšã³ã³ãŒããããçªå·ã®ãã¹ãŠã®ããããã圢æãããæäžäœãããïŒã¡ã€ã³çªå·ã¯00 81ã«ãšã³ã³ãŒããããŸãïŒãé€ãã1ã«èšå®ãããæåã®1ãããã®ã¿ããæžç®ãããçªå·ã圢æãããŸããããã³ä»ã®ãã¹ãŠã®ãããã¯0ã«èšå®ãããŸãïŒæžç®ãããæ°å€ã¯80 00ãšããŠãšã³ã³ãŒããããŸãïŒã
ãããŠä»ãçŽ æµãªæ å ±-çŸä»£ã®ã³ã³ãã¥ãŒã¿ãŒã·ã¹ãã ã§ã¯ãæŽæ°ïŒæ£ãšè² ã®äž¡æ¹ïŒã¯èªåçã«ãšã³ã³ãŒããããäžèšã®æ£ç¢ºãªåœ¢åŒã§ä¿åãããŸãã ã€ãŸããASN.1ã§æŽæ°ããšã³ã³ãŒãããã«ã¯ãäœãããå¿ èŠã¯ãããŸããããã€ãåäœã§ä¿åããã ãã§ååã§ãã
ä»®æ°ã®å€ã¯åžžã«ç¬Šå·ãªãæŽæ°ã§ãã ã€ãŸããASN.1ã§ãšã³ã³ãŒããããæ°å€ã®ä»®æ°ã¯åžžã«æ£ã®æ°å€ã§ãã è² ã®æµ®åå°æ°ç¹æ°ããšã³ã³ãŒãããããã«ãASN.1ã¯ãµãŒãã¹ãªã¯ãããã®ç¬ç«ãããããïŒããã7ïŒãæäŸããŸãïŒäžèšãåç §ïŒã
ä»®æ°ã¯ã256ãåºãšããåææ°ã®å±éä¿æ°ãè¡šãäžé£ã®ãã€ããšããŠãšã³ã³ãŒããããŸããã€ãŸãã10é²æ°ã®ä»®æ°ã32639ã§ããå Žåããšã³ã³ãŒããããæ°ã¯2ãªã¯ããã7F 7FïŒ32639 10 = 127 * 256 1 + 127 * 256 0 = 7F * FF 1 + 7F * FF 0 ïŒã
ASN.1ã®REALçªå·ããã€ããªè¡šçŸã§ãšã³ã³ãŒãããäŸïŒ
- ããšãã°ãæ°å€0.15625ã䜿çšããŸãã ãŸãã2ãåºæ°ã«ãã€ããªè¡šçŸã§ãšã³ã³ãŒãããŸãã2ãåºæ°ãšãããã®æ°ã®å±éã®ä¿æ°ã¯ã0.15625 10 = 1 * 2 -3 + 1 * 2 -5ã§ãã ã€ãŸãããã¹ãçªå·ã®ä»®æ°ã®å€ã¯M = 101 2ã«ãªããææ°ã¯-5ã«ãªããŸãã ãã®çªå·ã®ãµãŒãã¹ãªã¯ãããã¯1000 0000 2 = 80 16ã«ãªããŸãã ææ°å€ã¯1ãªã¯ãããã§ãšã³ã³ãŒããããŸãã-5= 123-128ã§ãããããã¡ã€ã³ã®æ°å€ã¯123 10 = 7B 16ã«ãªããæžç®ãããæ°å€ã¯128 10 = 80 16ã«ãªããŸãã -5ããšã³ã³ãŒãããæåŸã®ãªã¯ãããã¯FB 256ã«ãªããŸãã ä»®æ°å€ã1ã€ã®ãªã¯ãããã§ãšã³ã³ãŒããããŸãïŒ101 2 = 05 16 ã ããã§ãããŒã¹2ã®ãã€ããªã³ãŒãã§å€0.15625ããšã³ã³ãŒããããããã¯ã®ãã¹ãŠã®éšåããããããšã³ã³ãŒããããã¯å šäœã3ãªã¯ãããïŒ80 FB 05ïŒ 256ã§æ§æãããŸãã
- ããã§ãåãæ°å€0.15625ããšã³ã³ãŒãããŸãããæ¢ã«ããŒã¹8ã«ãããŸããããŒã¹8ã®ãã®æ°å€ã®å解ä¿æ°ã¯ã0.15625 10 = 1 * 8 -1 + 2 * 8 -2ã§ãã ã€ãŸãããã¹ãçªå·ã®ä»®æ°ã®å€ã¯M = 12 8 =ïŒ001 010ïŒ 2ã«ãªããŸã ïŒ8é²æ°ã·ã¹ãã ã§æ°å€ããšã³ã³ãŒãããå Žåãåå€ã«3ã€ã®åå¥ã®ããããå¿ èŠã§ãïŒã ææ°ã¯-2ã«ãªããŸãã ãã®çªå·ã®ãµãŒãã¹ãªã¯ãããã¯1001 0000 2 = 90 256ã«ãªããŸãã ææ°å€ã¯ã1ãªã¯ãããã§ãšã³ã³ãŒããããŸããã¡ã€ã³ããã³æžç®ãããæ°å€ã¯ãåŒïŒ-2 = 126-128ã§ãããããã£ãŠãææ°å€-2ããšã³ã³ãŒããããªã¯ãããã¯FE 256ã§ãã æ°å€ã®ä»®æ°å€ã1ãªã¯ããã0A 256ã§ãšã³ã³ãŒããããŸãã
- ãã®äŸã§ã¯ãåºæ°16ã®0.15625ã®æ°å€ãå±éããŸãããã®å解ã®ä¿æ°ã¯ã0.15626 10 = 2 * 16 -1 + 8 * 16 -2ãšããŠæ±ããããŸãã ãããã£ãŠãä»®æ°M = 28 16 =ïŒ0010 1000ïŒ 2ã®åŒãšææ°E = -2ã®å€ãååŸããŸãã ããã§è¿œå ã®æ¡ä»¶ãèšå®ããŸãïŒä»®æ°å€ã¯ãæ£èŠåãããå¿
èŠããããŸããã€ãŸããæ°å€ã®æäžäœæ¡ã«ãŒããå«ããããšã¯ã§ããŸããïŒãŸããæåŸã®æäžäœãããã1ã®å ŽåãæŽæ°ãååŸãããããããã®èŠä»¶ã¯ãä»®æ°ã¯å¥æ°ã§ãªããã°ãªããŸããã 1 * 2 0ã 2ã®ã¹ãä¹ã«å ç®ããããšããäºå®ã®ããã«å¥æ°ïŒã ãã®ãããªãæ£èŠåãã®æ¡ä»¶ãã©ã®ããã«æºããããšãã§ããŸããïŒ æããã«ãäž»ãªæ¹æ³ã¯ãæ°å€ã®ææ°ãå€æŽããæµ®åå°æ°ç¹ãã·ããããããšã§ãã åºæ°2ã§å解ã䜿çšããå Žåããã¹ãŠãåçŽã«èŠããŸããææ°ã1ã ãå€æŽãããšãæµ®åå°æ°ç¹ãã·ããããŸãïŒãŸãã¯ä»®æ°ã®äžäœæ¡ã®ãŒããè¿œå /åé€ããŸãïŒã ãã ãã8ãš16ãåºæ°ã«å解ããå Žåãææ°ã1ã ãå€æŽãããšãä»®æ°ã®æµ®åå°æ°ç¹ããããã3ããããš4ãããã ãã·ããããããšãããããŸãïŒåºæ°8ã®å解ã®å Žåãæ°ãè¡šãã«ã¯3ããããå¿
èŠã§ãããå解ã®å Žåã¯åºæ°16ã§ã¯ãæ°å€ãè¡šãã«ã¯4ããããå¿
èŠã§ãã ãããã£ãŠãåºæ°8ããã³16ã®å解ã§åŸãããä»®æ°å€ã¯ãåã«ææ°ã®å€ãå€æŽããã ãã§ã¯åžžã«ãæ£èŠåããããããšã«ã¯ã»ã©é ããã®ã§ãã ä»®æ°éšã®æµ®åå°æ°ç¹ãã·ããããå¯èœæ§ãããã«ã埮調æŽãããããã«ãè¿œå ã®ä¿æ°ãå°å
¥ãããŸããïŒä¹ç®ä¿æ°Fãä¹ç®ä¿æ°ã¯ä»®æ°éšã®æµ®åå°æ°ç¹ãå³ã«ã·ããããŸãïŒãŸãã¯å¿
èŠãªæ°ã®ãŒãããããæ°å€ã®å³ã«è¿œå ããŸãïŒã ãã®ããããã³ãŒãããåã«ãä»®æ°å€ã¯ä¹ç®M = N * 2 Fã®çµæãšããŠååŸãããŸãã æŽæ°ã«2ãæããããšã¯ã1ãããã®ãããå·Šã·ããã«çžåœããããšã¯ããç¥ãããŠããŸãã ãããã£ãŠã2 Fãä¹ç®ããããšã¯ãFããããå·Šã«ãããã·ããããããšãšåçã§ãã ãããã£ãŠãæ£èŠåã®èŠä»¶ãæ瀺ãããããä»®æ°ããšã³ã³ãŒã/ãã³ãŒããã次ã®ããã»ã¹ãååŸããŸãã
- ä»®æ°0010 1000ãæå®ããŸãã
- ãšã³ã³ãŒããããšãããæ£èŠåãïŒãŸãã¯3ãããå³ã«ã·ããïŒããŠ0000 0101ãååŸããåæã«ä¹ç®ä¿æ°F = 3ã®å€ãèšå®ããŸãã
- ãã³ãŒãæã«ã¯ããšã³ã³ãŒããããä»®æ°ã2 FåããŸãããšã³ã³ãŒããããä»®æ°ãF = 3ãããã ãå·Šã«ã·ããããŸãã
ãããã£ãŠããã®äŸã®æµ®åå°æ°ç¹æ°å šäœïŒä»®æ°ã®ãæ£èŠåãã®å¯Ÿè±¡ïŒã¯ã次ã®ãªã¯ãããã®ã·ãŒã±ã³ã¹ã«ãã£ãŠãšã³ã³ãŒããããŸãã
AC FE 05
æµ®åå°æ°ç¹æ°ã®ãã¹ãŠã®éšåã2ã®ã¹ãä¹ã®ç°ãªãå±éã§ã®ãã€ããªè¡šçŸã®åœ¢åŒã§ãšã³ã³ãŒãããããšã«å ããŠãASN.1ã§éåžžã®æåå圢åŒã§ãã®ãããªæ°å€ãè¡šã絶奜ã®æ©äŒããããŸãã ãã®å Žåãæ°å€ã¯10ãåºæ°ãšããŠãšã³ã³ãŒãããããšèããããŠããŸãã
10ã«åºã¥ããŠãšã³ã³ãŒãããå Žåããæ°å€è¡šçŸåœ¢åŒãã®æŠå¿µãè¿œå ã§å°å ¥ãããŸãã åèšã§ããã®ãããªåœ¢åŒã¯3ã€ããïŒåœ¢åŒNR1ãNR2ãããã³NR3ïŒãåå¥ã®æšæºISO 6093ã«èšèŒãããŠããŸãããã®æšæºãæ¯æãããŠããããããå ç¥ãISO 6093-æ°å€ã®è¡šç€ºã«æ £ããããECMA-63æšæºãæšå¥šããããšãã§ããŸããã€ã³ã¿ãŒãããã§èŠã€ããããšãã§ããŸãã
10é²å解衚çŸã§æµ®åå°æ°ç¹æ°ããšã³ã³ãŒãããå ŽåããµãŒãã¹æ å ±ãªã¯ãããã¯çªå·è¡šçŸåœ¢åŒã®ã³ãŒãïŒå¯Ÿå¿ãã圢åŒã§ã¯01ã02ããŸãã¯03ïŒã瀺ãããµãŒãã¹æ å ±ãªã¯ãããã®çŽåŸã«ã¯ããšã³ã³ãŒããããçªå·ãè¡šãæåã®ã³ãŒãã瀺ãããŸãã 次ã®æåã³ãŒããèš±å¯ãããŠããŸãã
- 0ã9ã®æ°åãè¡šãèšå·ïŒããããã³ãŒã30ã39ïŒã
- ã¹ããŒã¹ïŒã³ãŒã20ïŒ;
- åºåãæåããã ïŒã³ãŒã2EïŒ;
- åºåãæåãããïŒã³ãŒã2CïŒã
- ææ°ãEããè¡šãèšå·ïŒã³ãŒã45ïŒããŸãã¯ææ°ãeããè¡šãå¥ã®èšå·ïŒã³ãŒã65ïŒã
- èšå·ã-ãïŒ2Dã³ãŒãïŒã
- èšå·ã+ãïŒã³ãŒã2BïŒã
ä»ã®ãã¹ãŠã®æåããšã³ã³ãŒãããããšã¯ã§ããŸããïŒäžèšä»¥å€ã®æåããã³ãŒãããå Žåããšã©ãŒãåºãã«ã¯ASN.1ãã³ãŒããŒãå¿ èŠã§ãïŒã
10é²æµ®åå°æ°ç¹ãšã³ã³ãŒãã®äŸïŒ
- ããšãã°ãéåžžã®çªå·1ããšã³ã³ãŒãããŸããNR1圢åŒã§ã®ãã¬ãŒã³ããŒã·ã§ã³ã®å Žåãçªå·ã¯æååã1ãïŒãŸãã¯ã+1ãïŒã§ãšã³ã³ãŒããããŸãã
- NR2ã®åœ¢åŒã§çªå·ã衚瀺ããå Žåãçªå·ã¯åºåãæåã§æ¢ã«ãšã³ã³ãŒããããŠããå¿
èŠãããããã以äžã®ãã¹ãŠã®è¡ã¯åçã§ãã
- ã1ã
- ã+1.0ã
- ã1.000000ã
- ã1.0ãïŒè¡ã®å é ã«ç¡å¶éã®ã¹ããŒã¹ãããå ŽåããããŸãïŒ
- NR3ã®åœ¢åŒã§1ãæ³åããŠãã ããã ããã§ã¯ãåé¢èšå·ãšææ°èšå·ã®äž¡æ¹ã䜿çšããå¿ èŠããããŸãã NR3ã®åœ¢åŒã§ã¯ãæšæº1ã«åŸã£ãŠãã+ 1.0E + 0ãïŒåºåãèšå·ãããã®å Žåã¯ã1.0E + 0ãïŒãšããŠè¡šãããšãã§ããŸããã€ãŸããææ°ã®å€ã¯åžžã«ãŒãã§ãªããã°ãªããŸããã
éåžžã®çªå·ã«å ããŠãASN.1ã§ã¯ãããã€ãã®ãç¹å¥ãªãçªå·ããšã³ã³ãŒãããããšãã§ããŸãã
- PLUS-INFINITYïŒãã©ã¹ç¡é倧ïŒ;
- ãã€ãã¹ç¡éïŒãã€ãã¹ç¡éïŒ;
- NOT-A-NUMBERïŒãããããéçªå·ãïŒ;
- ãã€ãã¹ãŒãïŒã-0ãããšã³ã³ãŒãããå¯èœæ§ã®ããïŒ;
ç¹å¥ãªçªå·ã¯ãã¹ãŠãææ°ãšä»®æ°ã«ãªã¯ããããæå®ããã«ã1ã€ã®ãµãŒãã¹æ å ±ãªã¯ãããã®ã¿ã§ãšã³ã³ãŒããããŸãã
- ãã©ã¹ç¡é-40,256 ;
- ãã€ãã¹ç¡é-41,256 ;
- NOT-A-NUMBER- 42,256 ;
- ãã€ãã¹ãŒã-43,256 ;
æŽæ°ïŒç§ã®èšäºã®åŸç¶ã®ç« ã®ãªã¹ã
æŽæ°ïŒ2ïŒ ãã¹ãŠã®ããŒã¿åã®ã³ãŒãã£ã³ã°äŸãã¡ã€ã«ãžã®ãªã³ã¯
æŽæ°ïŒ3ïŒèª°ããèŠéãããããããŸããããREALåããµããŒãããC ++ ASN.1ã®ã³ãŒããŒ/ãã³ãŒããŒå®è£ ã§ãã JavaScriptã®å®è£ ã次ã«ç€ºããŸããããããŸã§ã®ãšãããREALåã¯ãããŸããã