SW/Flutter

flutter dart , Stringhex to int 변환, 플러터 hex 변환 처리

또난 2022. 4. 28. 22:24

기본 코드

import 'dart:typed_data';
void main() { 
  //String hexStr = '3075';
  String hexStr = 'd7fff945';  // 7999.98 
  //String num = '1000';
  //hexStr = int.parse(num, radix: 10).toRadixString(16);
  //int ihex = int.parse(hexFt, radix: 16);
  if(hexStr.length%2 != 0) hexStr = '0'+hexStr;
  print(hexStr);
  double ff = 7999.98;
  print(ff);
  var bd = ByteData(4);     
  bd.setFloat32(0, ff);
  print(bd.getUint32(0,Endian.little).toRadixString(16));
    
  for(int i = 0; i<hexStr.length/2; i++){   
    int len = i*2;
    bd.setUint8(i, int.parse(hexStr.substring(len,len+2), radix: 16));     
  }  
   
  var fConL = bd.getFloat32(0,Endian.little);   
  var uintConL = bd.getUint32(0,Endian.little); 
  var intConL = bd.getInt32(0,Endian.little); 
  
  var fConB = bd.getFloat32(0,Endian.big);   
  var uintConB = bd.getUint32(0,Endian.big); 
  var intConB = bd.getInt32(0,Endian.big); 
  
  print('Little Endian => Float32 ${fConL.toStringAsFixed(3)} Uint32 ${uintConL} Int32 ${intConL} ');
  print('Big Endian => Float32 ${fConB.toStringAsFixed(3)} Uint32 ${uintConB} Int32 ${intConB} ');
}

 

===== 실행 결과 =====

d7fff945
7999.98
d7fff945
Little Endian => Float32 7999.980 Uint32 1174011863 Int32 1174011863
Big Endian => Float32 -562892139134976.000 Uint32 3623876933 Int32 -671090363

윈도우 변환기

윈도우 계산기도 있으나, 좀 불편하고 리틀/빅 엔디안하고 실수 변환(?)은 안되서 주말에 잠깐 만들어봄.
안드로이드 앱도 빌드해서 필요할때 확인함. 막상 만들면 안쓰게됨 😂

hex 부분 마우스로 클릭하면 hex, int, float, ascii 순서로 변경됨.

 

 

소수값도 각 엔디안으로 확인 가능

https://gregstoll.com/~gregstoll/floattohex/

상기 사이트에서 400.1 은 0x43C80CCD 확인.

ver 0.0.5

 - 기기 사이즈 적용.
 - FittedBox 사용 텍스트 정렬, 동일 데이터 표시 삭제,
 
ver 0.0.6
 - int 변환 버그 있어 수정함.

프로그램 다운.

더보기

 

======== 풀 버전   ==========

hexDsp_v003.7z
6.17MB

===== DLL 제외 버전 (풀버전에 덮어쓰기 하면 됨.)  =================== 

 

ver004.7z
2.07MB

 

Release005.7z
6.36MB
Release006.7z
6.72MB