כמה בתים תופס char בjava

niro a

New member
כמה בתים תופס char בjava

אני רוצה להכניס ערך char לתוך מערך של בתים איך אני עושה את זה. (אני יודע אשני צריך שזה יכנס לכמה בתים יחד אבל איך אני עושה את זה)
 

EndersG

New member
אם אני לא טועה 2

בjava קידוד הטקסט נעשה ביוניקוד וכך מתאפשרת כתיבה מרובת פות. ככל הידוע לי יוניקוד מקצה 2 בתים. אה - וגם דוד שלי (google ) אומר אותו הדבר:

To bootstrap the process, for primitive data types I use physical sizes as measured by Java Tip 130's Sizeof class. As it turns out, for common 32-bit JVMs a plain java.lang.Object takes up 8 bytes, and the basic data types are usually of the least physical size that can accommodate the language requirements (except boolean takes up a whole byte): // java.lang.Object shell size in bytes: public static final int OBJECT_SHELL_SIZE = 8; public static final int OBJREF_SIZE = 4; public static final int LONG_FIELD_SIZE = 8; public static final int INT_FIELD_SIZE = 4; public static final int SHORT_FIELD_SIZE = 2; public static final int CHAR_FIELD_SIZE = 2; public static final int BYTE_FIELD_SIZE = 1; public static final int BOOLEAN_FIELD_SIZE = 1; public static final int DOUBLE_FIELD_SIZE = 8; public static final int FLOAT_FIELD_SIZE = 4;​
 

niro a

New member
אבל איך אני מכניס לתוך מערך בתים

איך אני יכול להכניס לתוך מערך בתים ערך char
 

EndersG

New member
מה אתה צריך לעשות בדיוק ?

למה לא להשתמש במערך של charים ?
 

niro a

New member
מערך בתים

העניין הוא שהנתונים מעורבים באותו מערך ולכך אני חייב להשתמש במערך של בתים
 

EndersG

New member
לא הבנתי - אני יכול לפרט א אפילו..

לצרף קוד? האם מה שMotiAd הציע למטה עזר?
 

EndersG

New member
אוקי אז תסביר את עצמך

אנא פרט מעט יותר - או אפילו צרף קוד ואנסה לעזור
 

niro a

New member
הסבר

אני רוצה להכניס ל2 בתים במערך בתים ערך מס]רי בגודל 2 בתים וגם להכניס לשני בתים אחרחם במערך ערך char שכידוע הוא בגודל 2 בתים אבל איך אני מכניס אותו למערך בתים(כך שיתפוס לי שני בתים)
 

EndersG

New member
צ'מע אני לא מבין גדול בג'אווה - אבל

נראה לי שהכיוון שלך לא נכון. למה לעבוד עם בתים ? לא יותר פשוט ליצור מערך של short ? היתרונות ברורים:
public class Tst { public static void main(String[] args) { short arrShorts[]=new short[10]; char arrChar[]={'a','b','c','ש','d'}; short num=0; int i; for ( i= 0;i<arrShorts.length;i+=2) { arrShorts=num++; arrShorts[i+1]=(short)Character.getNumericValue(arrChar[i/2]); System.out.print(""+i+"\t"+arrShorts+"\n"+(i+1)+"\t"+arrShorts[i+1]+"*\n"); } } }
 

EndersG

New member
אצלי כן.

java 1.4.2_05 mandrake9.2​
למה, מה הבעיה? אני עושה משהו לא שיגרתי?
 

EndersG

New member
לא חשוב? בטח שחשוב!../images/Emo22.gif

אחרת איך אני אלמד ? אני מקווה שאתה לא זורק לי כזו פ33ה והולך, נכון?
 

voguemaster

New member
היה פה שירשור לא מזמן

לגבי שימוש ב-shortים. אני לא זוכר מי זה היה (אתה או אחר). בכל מקרה, אחרי קצת חפירה גיליתי שאופרטורים אונריים (שפועלים על אופרנד אחד) גורמים ל-promotion, כלומר, המרה אוטומטית של האופרנד מטיפוס קטן יותר ל-integer. כמובן, אנחנו מדברים רק על שלמים. הסיבה לזה ברורה לגמרי אם חושבים על זה מבחינת אסמבלי אבל איך זה שאופרטור ++ לא גורם ל-promotion ??
 

voguemaster

New member
אם אתה יכול לעבוד סדרתי

אתה יכול להשתמש ב-stream בצורה הבאה:
ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); byte[] bytes = new byte[NUM]; // do some stuff // write bytes dos.write(bytes, 0, bytes.length); // write a char char c = 'c'; dos.writeChar((int)c); dos.close();​
ע"י כתיבה ל-DataOutputStream אפשר לכתוב טיפוסי ג'אווה פרימיטיביים בצורה פורטבילית לתוך stream. זה מקושר אל ByteArrayOutputStream שהתוצר שלו הוא מערך של בתים. בכל פעם שכותבים אליו נוספים בתים אל ה-BUFFER שלו. שוב, אם אתה יכול לכתוב סדרתית, זו הדרך המומלצת.
 

MotiAd

New member
בדרך די פשוטה למען האמת...

עושה עטיפה לאובייקט Char ולו כבר יש שיטה של לתת מערך בתים. משהו בסגנון של
Char obj = new Char('a'); byte[] byt = obj.getBytes();​
אני מאמין שזה הכל.
 
למעלה