به علت پیچیدگی این مورد با ذکر یک مثال مطلب رو دنبال میکنیم.
0791893905004102240C918939564208
8400008060504112928110C2B0DC1D6E
97DD657B7AEE7ACBCF
این پیامی هست که به دست من رسیده؟!!!
قسمت اول شماره مرکز پیام:
0791893905004102
07 : بدین معنی که شماره مرکز پیام 07H هفت بایت از این متن رو اشغال کرده که بعد از علامت شماره قرار میگیره.
91 : بدین معنی که شماره مرکز پیام بین المللی است و با + شروع شده ("اگر غیر از این بود عدد 81 جایگزین میشد")
893905004102 : این خود شماره مرکز پیام هست ، یه شمارش بزنید! میبینید که محتوای موجود دارای 6 بایت هست که با 1 بایت علاکت میشه 7 بایت یعنی همون عددی که در ابتدا داشتیم.این شماره هم مثل همیشه به صورت جفت معکوس هست که باید برای خوانا شدن معکوس بشه یعنی :
داریم :
89-39-05-00-41-02
که بعد از بر عکس کردن میشه :
98-93-50-00-14-20
پس با احتساب علامت شماره داریم :
+989350001420
خیلی راحت بود مگه نه ;)
24 : این عدد که یکی از پر معنا ترین اعداد برای ما هست 2 تا مسئله رو برامون روشن میکنه.
این عدد چندین حالت میتونه داشته باشه که من عام اون رو بهتون میگم.
04: برای SMS یعنی شخصی که پیام رو فرستاده درخواست گزارش یا همون Delivery نکرده.
24: برای SMSیعنی شخصی که پیام رو فرستاده درخواست گزارش یا همون Delivery کرده.
40: برای EMSیعنی شخصی که پیام رو فرستاده درخواست گزارش یا همون Delivery نکرده.
44: برای EMS یعنی شخصی که پیام رو فرستاده درخواست گزارش یا همون Delivery کرده.
06: پیام فعلی یک گزارش هست.
البته این اعداد همینجوری یلخی هم به دست نیامده و با 0 و 1 شده معادل باینری اونا سرو کار داره. ولی کلیات کار رو تا اینجا داشته باشید کفایت میکنه.
پس تا اینجا ما فهمیدیم که با این عدد به 2 دسته اطلاعات میشه پی برد یکی نوع پیام و دیگری آیا درخواست گزارش از طرف فرستنده ارسال شده یا نه.
حالا میخواهیم دقیق از روی عددی که توی این بایت وجود داره بفهمیم که نوع این کد چیه؟
- SMS دریافت شده = 0
- SMS ذخیره شده = 1
- گزارش دریافت یک پیام = 2
- EMS دریافت شده = 64
- EMS ذخیره شده = 65
البته اون عدد 24 در مبنای 16 هست و این عدد هایی که من نوشتم تا اینجای کار ربطی به اون 24 نداره و همچنین در مبنای 10 هستند.
اینجا باید عدد 24H رو با 3 و 64 در مبنای 10 And کنیم و هر دو نتیجه رو با هم جمع کنیم یعنی :
36 دسیمال = 24 هگز = 00100100 باینری
AND
3 دسیمال = 3 هگز = 00000011 باینری
جواب1
0 دسیمال = 0 هگز = 00000000 باینری
و داریم
36 دسیمال = 24 هگز = 00100100 باینری
AND
64 دسیمال = 40 هگز = 01000000 باینری
جواب2
0 دسیمال = 0 هگز = 00000000 باینری
که در جمع 2 جواب به عدد 0 میرسیم که میشه : SMS دریافت شده = 0
فقط امیدوارم با AND باینری آشنا باشید!
AND باینری!
0AND0=0
0AND1=0
1AND1=1
پس ما با AND کردن این عدد با 3 و 64 و جمع نتیجه ها به این نکته پی میبری که پیام ما چیه ولی یه نکته که اهمیت داره و کاربرد نداره اینه که:
اگر جواب اول بشه 3 و جواب دوم بشه 64 نوع پیام میشه : EMS ارسال شده
-----------------------------------------------------------------------------
ادامه در پست بعد.
موفق باشید