——小夏啊拆内,你去熟悉下bcd碼和ascii碼的轉化栏尚,8583報文解析會用到。
——好的拥峦。
百度贴膘,開啟。
bcd碼的畫風: 123 => 0001 0010 0011? (最常用的8421)
百度略号,關閉刑峡。
實際bcd碼的畫風 <<"abc">>?
(╯‵□′)╯︵┻━┻
言歸正傳,我仔仔細細的研究了下大佬給的實現代碼(瞎g2試)玄柠,然后終于發(fā)現了這其中的門道突梦。
bcd碼轉ascii碼,以 <<"abc">> 為例羽利,a的ascii碼數字是97阳似,bc分別是98,99,也就說 <<"abc">> = <<97,98,99>> 铐伴。97的16進制寫法為0x61撮奏,轉化的結果是 <<"616263">> 。在這里有一點需要注意当宴,就是結果長度肯定是雙數畜吊,也就說 <<0>> => <<"00">>。
ascii碼轉bcd碼户矢,也是同樣的玲献,以 <<"1a2b3c4d5e6f">> 為例,0x1a的10進制結果為26梯浪,兩位求一次十進制捌年,最后的結果為?<<26,43,60,77,94>>? 。在這里挂洛,bcd碼是8583報文傳輸時的內容礼预,而ascii碼是可視化的解析出來的數據。
我猜想虏劲,erlang的bcd碼表示和語言本身的特殊性有關托酸,倘若海明碼是以01的格式傳輸的褒颈,應當是先轉為十進制數,然后轉化為十六進制的ascii碼表示励堡。又或許谷丸,這只是命名上的雷同,如果你也遇到相同的境地应结,希望這篇文章能有所幫助刨疼。