public static int swapLittleEndian(byte[] bytes) {
     
        int newValue = 0;
        newValue |= (((int)bytes[3])<<24)&0xFF000000;
        newValue |= (((int)bytes[2])<<16)&0xFF0000;
        newValue |= (((int)bytes[1])<<8)&0xFF00;
        newValue |= (((int)bytes[0]))&0xFF;


        return newValue;

}

'java > util' 카테고리의 다른 글

[java] - byte array to int  (0) 2010.06.29
[java] - int to byte array  (0) 2010.06.29
[java] - Little Endian to Big Endian  (0) 2010.06.29
[java] - float to byte array  (1) 2010.06.29
[java] - byte array to float  (0) 2010.06.29
Posted by 짱가쟁이
public static int swapBigEndian(String args) {

        int value=Integer.parseInt(args);

        // all java integer is BIG-ENDIAN(network byte-order)
        byte[] bytes=new byte[4];
        bytes[3]=(byte)((value&0xFF000000)>>24);
        bytes[2]=(byte)((value&0x00FF0000)>>16);
        bytes[1]=(byte)((value&0x0000FF00)>>8);
        bytes[0]=(byte) (value&0x000000FF);


        int newValue = 0;
        newValue |= (((int)bytes[0])<<24)&0xFF000000;
        newValue |= (((int)bytes[1])<<16)&0xFF0000;
        newValue |= (((int)bytes[2])<<8)&0xFF00;
        newValue |= (((int)bytes[3]))&0xFF;

        return newValue;
}

'java > util' 카테고리의 다른 글

[java] - int to byte array  (0) 2010.06.29
[java] - Big Endian to Little Endian  (0) 2010.06.29
[java] - float to byte array  (1) 2010.06.29
[java] - byte array to float  (0) 2010.06.29
[java] - byte array to short  (0) 2010.06.29
Posted by 짱가쟁이
public static byte[] float2bytes(float value) {
      
        byte[] array = new byte[4];
      
        int intBits=Float.floatToIntBits(value);
      
        array[0]=(byte)((intBits&0x000000ff)>>0);
        array[1]=(byte)((intBits&0x0000ff00)>>8);
        array[2]=(byte)((intBits&0x00ff0000)>>16);
        array[3]=(byte)((intBits&0xff000000)>>24);
      
        return array;
}

Posted by 짱가쟁이
public static float arr2float (byte[] arr, int start) {

            int i = 0;
            int len = 4;
            int cnt = 0;
            byte[] tmp = new byte[len];

            for (i = start; i < (start + len); i++) {
                  tmp[cnt] = arr[i];
                  cnt++;
            }

            int accum = 0;
            i = 0;
            for ( int shiftBy = 0; shiftBy < 32; shiftBy += 8 ) {
                  accum |= ( (long)( tmp[i] & 0xff ) ) << shiftBy;
                  i++;
            }
            return Float.intBitsToFloat(accum);
}    

Posted by 짱가쟁이
public static int byteToShort(byte[] bytes) {
     
            int newValue = 0;
            newValue |= (((int)bytes[0])<<8)&0xFF00;
            newValue |= (((int)bytes[1]))&0xFF;

            return newValue;
}

Posted by 짱가쟁이
텔레메트릭스 어쩌구 하면서 IEEE1451 TEDS Tool을 작업하면서 XML로 TEDS 데이터를 관리한적이 있었다.

그당시 JDOM(??)을 사용했을듯 한데.. 하튼.. 아무 생각없이 좀 무식하게 만들감이 있어.. XML to Object 를 찾다가 발견한넘이 JAXB(Java Architecture for XML Binding)다. 생각보다 요넘 많이 유용한듯..

문서를 찾다보니.. 예외 처리 시 어쩌구 저쩌구 하지만.. 그 방법은 다음으로 미루고.. 초기 프로토타입 버전을 올림(난중에 얼마나 무식했었는지 참고용ㅋㅋ)

Example
package jface.common.xmlbind;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.UnmarshallerHandler;

import javax.xml.bind.Unmarshaller;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

import jface.common.coolbar.marshalling.Coolbar;

public class XmlBinding {

 

 /**
  * unmarshalling
  *
  * XML to java 데이터 객체
  *
  * @param path
  *    .xml 경로
  * @return
  *    언마샬된 데이터 객체
  */
 public Coolbar getCoolBarMenu(String path) {
 
  try {
   ClassLoader cl = this.getClass().getClassLoader();
   JAXBContext context   = JAXBContext.newInstance(Coolbar.class); 
   Unmarshaller unmarshaller  = context.createUnmarshaller();
  
   // Unmarshaller에서 저수준 처리기를 얻는다.
   UnmarshallerHandler unmarshallerHandler = unmarshaller.getUnmarshallerHandler();

   // SAX 파서를 얻기 위해 JAXP를 사용한다.
   SAXParserFactory factory = SAXParserFactory.newInstance();

   // factory 옵션을 설정한 다음, 표준 JAXP 호출을 사용한다.
   factory.setNamespaceAware(true);

  
   XMLReader reader = factory.newSAXParser().getXMLReader();

   // unmarshallerHandler로 reader 처리기를 설정한다.
   reader.setContentHandler(unmarshallerHandler);

   // 이제 JAXB에서 가져온 언마샬링 처리기를 사용해 구문분석에 들어간다.
   reader.parse(new InputSource(cl.getResourceAsStream(path)));
  
   Coolbar instance = (Coolbar)unmarshallerHandler.getResult();

   return instance;
  } catch(Exception e) {
   e.printStackTrace();
   return null;
  }

 }
 
 /**
  * marshalling
  *
  * java object to XML
  * @param path
  *     .xml 경로
  * @param coolbar
  *     java 데이터 객체
  */
 public void setCoolBarMenu(String path, Coolbar coolbar) {
  try {
   ClassLoader cl = this.getClass().getClassLoader();
   JAXBContext jc = JAXBContext.newInstance(Coolbar.class);
  
         Marshaller   m  = jc.createMarshaller();
         m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT,  Boolean.TRUE );

         OutputStream  os  = new FileOutputStream( new File(cl.getResource(path).getPath()) );

         m.marshal( coolbar, os );


  } catch(Exception e) {
  }
 }
}

ps.
    - XML to Java Class 를 이클립스 plug in 으로 만들어 보는게 좋을듯.. 공부도 할겸. (이런거는 좀 미루지 말자.)


'java > xml' 카테고리의 다른 글

[xml] - xjc.exe 를 사용한 xsd to java class 생성  (0) 2010.06.29
[xml] - xml to xsd  (0) 2010.06.29
[java] - Marshaller 을 이용한 Object to xml string  (0) 2010.06.25
Posted by 짱가쟁이
xjc.exe
C:\Program Files\Java\jdk1.6.0_16\bin\xjc.exe

사용방법
D:\Launcher>xjc XCoolBar.xsd
parsing a schema...
compiling a schema...
generated\Child.java
generated\Coolbar.java
generated\ObjectFactory.java
generated\Parent.java

'java > xml' 카테고리의 다른 글

[JAXB] - unmarshalling, marshalling  (0) 2010.06.29
[xml] - xml to xsd  (0) 2010.06.29
[java] - Marshaller 을 이용한 Object to xml string  (0) 2010.06.25
Posted by 짱가쟁이
2010. 6. 29. 17:16

작성된 *.xml을 토대로 OOO.xsd 생성

- Trang(XSD 추론도구)를 사용하여 XSD 생성.
- Trang 사용 예.
    : java -jar trang.jar coolbar.xml XCoolBar.xsd

Posted by 짱가쟁이
Java Performance Fundamental 40page 를 보면 알기 쉽게 설명해 놓음.
 

붕어빵틀(Class)과 붕어빵 관계(Instance)
위의 책을 토대로 설명하면.. Class Loading 시 Class 정보를 추출하여 Method Area 에 붕어빵틀을 생성한다. 여기서 누군가가 Instance를 생성할려고 하면 Method Area 의 Class 정보를 틀로 하여 Heap 에 Object를 하나 찍어낸다. 이것이 Instance 이다.

Posted by 짱가쟁이
참조
Java Performance Fundamental(김한도) 참조

Field
- Instance Variable
  : non-static field

- Class Variable     
  : Class 에서 static 으로 선언된 변수(static field) 이며 Class 에서는 하나의 값으로 유지됨
  : Class 를 사용하기 전부터 Method Area 에 미리 메모리를 할당 받는다.

Variable
- Local Variable
- Parameter

Posted by 짱가쟁이