الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لماذا لا يوجد في java تعريف unsigned

مغلق
بدأه b.m.s في 4 أكتوبر 2006 · 8 رد · 812 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أريد أن أستفسر لماذا لا يوجد تعريف unsigned في لغة الجافا

وإذا كان الــ unsigned لا فائد منه فلماذا وجدت method تسمى readUnsignedByte

وشكراً

#2

ربما تكون الإجابة غريبة...

فلسفة مصمم الجافا كانت تقتضي أن تكون اللغة سهلة قدر الإمكان. وكان يرى أن استعمال unsigned في (سي) أو غيرها غير مفهومة لدى الكثيرين. وأن استعمالها غير وارد. وبالفعل كانت الجافا من أسهل اللغات لخلوها من الزوايا الغريبة التي قد توجد في لغات أخرى.

أذكر أني قرأت فلسفة المصمم قديما،، حاول البحث،، وستجد أن هذا مثال لما سماه من التعقيدات.

وأما سؤالك الثاني،، فهذه طريقة لقراءة unsigned byte من الشبكة مثلا أو ملف وتحويلها إلى لغة الجافا لتكون singed في النهاية. ليس المقصود أن unsigned لا قائدة لها، ولكن إذا أردت أن تقرأ معلومات من الشبكة مثلا، قد تحتاج إلى تحويل هذه bytes إلى singed إذا أرسلت من مصدر يرسل unsigned.

#3

زيادة على كلام ابو مازن وان مصممين الجافا شافوا إنها غير ضروريه

unsigned حقيقة ماشفت لها استخدام الى الآن

اذا تبي تحول بايت من unsigned إلى signed اضف له 0xff واعمل كاست له

0xff لأن طول int في الجافا هو 32

طول الlong في لغة السي 32 بينما طوله في الجافا 64

#4

أنا رأيي إن unsigned يزيد من المرونة في اللغة وقد يزيدها تعقيد وقد يكون تركه تعيقد بحد ذاته

كيف ؟

الآن لو عندك ملف مصلح له ecoding ب cp1256 وهو encoding خاص بالويندوز ويدعم العربي والإنجليزي وكلها في بايت واحد

و معروف إن الحروف العربية ترميزها فوق 128 فمثلاً حرف ف ترميزه 221 فلو قريت byte من الملف وأردت التعامل معه فسوف تتعامل مع رقم سالب هو 35- تقريباً

طيب يجي حل بسيط وهو إن نخزنه في short أكبر منه ويشيل قيمه مثل 221 بس هنا تجي المشكلة ؟ وما يكتشفها

الواحد الإ يكون محترف أو صلح debug ولف ودار أما المبتدئيين بيوقفون مستغربيين

وهي عند الترقية من byte إلى short يعتبر هذا البايت من النوع السالب فيكون البايت الثاني في short كله يحتوي على 0xff والحل إن تصلح له clear عن طريق and

وش رايكم مو شغله مقعدة أكثر من تعريف unsigned

#5

همممم...

لا أدري ،، لكن عندما نقرأ من ملف فعليك أن تحدد التشفير المناسب.

يعني مثلا..

new String (byteMessageFromFile, "ascii");

طبعا غير التشفير كما تريد!

وتنتهي القصة!

ولا أدعي علما في هذا الجانب!

بالتوفيق!

#6

اخواني الجافا تمثل char على انه 16 bit

يعني unicode دائماً !!

#7

أعرف أنه تقدر تحدد تشفير الملف بالجافا

وتريح مخك وهذه ميزة تحسب للجافا

لكن المشكلة إن المشروع يتطلب إنك ما تستخدم أي مكتبة أو دالة أو كائن جاهز

فقط لا غير

يعني في حالة ISO و cp1256 راح تقرأ بايت بايت أما في حالة Unicode راح تقرأ بايتين بايتين

أما في حالة utf8 فالوضع هنا مختلف

أرجو إن الفكرة وصلت

#8

هل هذا مشروع أم واجب منزلي؟

عموما،، إذا كنت لن تستخدم أي حزمة جاهزة،، فإن جافا أسوأ اختيار لعمل مثل هذا المشروع!

أنصح بلغة سي.

بالتوفيق!

#9
حسام الملحم أبومازن كتب:
هل هذا مشروع أم واجب منزلي؟

لا أصغر من الواجب بعد :D

بس حنا نسمي أي شئ يطلبه الدكتور مشروع :P

عموما والله صدقت في هذه لكن قلت أنا أبي أجرب java فقط لا غير

وإستغربت من unsigned وقلت لازم أستفسر وعرفت لماذا لم يوجد

وجزاكم الله خير

تم تعديل هذه المشاركة بواسطة b.m.s في 7 أكتوبر 2006 في 16:28

هذا الموضوع مغلق.

مواضيع مشابهة