Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert DEC to IP dart

Tags:

flutter

dart

I get a int32 : -1407942911 that I need to convert to a ip

I used this function:

_setIp(int _ip){
    var _strData = StringBuffer();
    for (int i = 0; i<4; i++){
      _strData.write(_ip &0xff );
      if (i < 3) {
        _strData.write(".");
      }
      _ip = _ip >> 8;
    }
    return _strData.toString();
}

but I get the ip backwards: 1.127.20.172 instead of 172.20.127.1

I was trying to replicate this java code

 public String longToIp(long ip) {
    StringBuilder result = new StringBuilder(15);

    for (int i = 0; i < 4; i++) {
        
        result.insert(0,Long.toString(ip & 0xff));

        if (i < 3) {
            sb.insert(0,'.');
        }

        ip = ip >> 8;
    }
    return result.toString();
  }

Update

I solved the error

    static setIp(int _ip){
        var _strData = StringBuffer();
        for (int i = 0; i<4; i++){
          _strData.write(_ip >> 24 &0xff );
          if (i < 3) {
            _strData.write(".");
          }
          _ip = _ip << 8;
        }
        return _strData.toString();
      }
like image 753
marcosagni98 Avatar asked Oct 21 '25 16:10

marcosagni98


1 Answers

You can do something like this:

import 'dart:io';
import 'dart:typed_data';

void main() {
  print(getIpFromInt32Value(-1407942911)); // 172.20.127.1
}

String getIpFromInt32Value(int value) => InternetAddress.fromRawAddress(
        (ByteData(4)..setInt32(0, value)).buffer.asUint8List())
    .address;
like image 115
julemand101 Avatar answered Oct 23 '25 07:10

julemand101



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!