פורסם 2010 בפברואר 1215 שנים שלום,אני מנסה לקרוא מערך של ביטים מקובץ ב Java בעזרת הספריה FileInputStream הבעיה היא שעבור ערכים מסויימים הספריה ממירה אותם מ Hex ל Dec בצורה לא נכונה לדוגמא אם בקובץ יש את הביתים הבאים:00 00 15 A2הספריה קוראת אותם לתוך המערך בגודל 4 באופן הבא[ 0, 0, 21, 94- ]ההמרה של 15 היא באמת נכונה ו 0x15=21 אבל למה למה הוא ממיר A2 ל 94-?עוד דוגמא00 FF 03 00אני מקבל מערך שמכיל את המספרים הבאים[ 0, 0, 3, 1- ]הצורה שבה אני קורא מהקובץbyte[] signa = new byte[4];File file = new File(fileName);;FileInputStream fis = new FileInputStream(file);fis.read(signa, 0, 4);למישהו יש מושג למה זה קורה???תודה
פורסם 2010 בפברואר 1215 שנים Byte בג'אווה הוא טיפוס signed, מה שאומר שהטווח שלו הוא 128- עד 127, כשהביט העליון ביותר בייצוג הבינארי של המספר מייצג את הסימן. כלומר, אם הביט העליון הוא 0 אז המספר חיובי (או 0), אחרת המספר שלילי.
פורסם 2010 בפברואר 1215 שנים מחבר אוקי מצאתי פתרון לבעיהint a = byte & 0xFF;פותר את הבעיהתודה רבהאפשר לנעול
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.