Android常用數據類型轉換

来源:https://www.cnblogs.com/94xiyang/archive/2018/07/24/9359577.html
-Advertisement-
Play Games

String轉int、float、double、byte[]、bitmap Int轉string、byte[] Byte[]轉string、int、bitmap Bitmap轉string、byte[] 從資源文件中獲取Bitmap Gson高精度String、Float[]互轉(測試可保留6位數以 ...


String轉intfloat、double、byte[]、bitmap

Int i = Integer.parseInt(str);
 
Float f = Float.parseFloat(str);
 
Double d = Double.parseDouble(str);   

//將16進位字元串轉byte數組

public static byte[] hexStringToByte(String str) {
        if(str == null || str.trim().equals("")) {
             return new byte[0];
        }
       byte[] bytes = new byte[str.length() / 2];
        for(int i = 0; i < str.length() / 2; i++) {
            String subStr = str.substring(i * 2, i * 2 + 2);
            bytes[i] = (byte) Integer.parseInt(subStr, 16);
        }
        return bytes;
}

String.format("%04x", i);//將10進位整形轉16進位字元串,%04x2位元組表示不足位補0

//將String字元串轉回Bitmap

public Bitmap stringToBitmap(String string) {
      Bitmap bitmap = null;
      try {
           byte[] bitmapArray;
           bitmapArray = Base64.decode(string, Base64.DEFAULT);
           bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0,bitmapArray.length);
      } catch (Exception e) {
          e.printStackTrace();
      }
      return bitmap;
}

 Int轉string、byte[]

String str = String.valueOf(i);//效率最高

//將Int轉byte[]數組

public static byte[] intToBytes2(int n){
      byte[] b = new byte[4];
      for(int i = 0;i < 4;i++){
          b[i] = (byte)(n >> (24 - i * 8)); 
      }
      return b;
}

 Byte[]轉string、int、bitmap

//byte數組轉16進位字元串

private String bytes2HexString(byte[] b, int length) {
      StringBuilder r = new StringBuilder();
      for (int i = 0; i < length; i++) {
           String hex = Integer.toHexString(b[i] & 0xFF);
           if (hex.length() == 1) {
              hex = "0" + hex;
           }
           r.append(hex.toUpperCase());
     }
      return r.toString();
}

//byte數組轉16進位字元串

public static int byteToInt(byte[] b) {
      int mask=0xff;
      int temp=0;
      int n=0;
      for(int i=0;i<b.length;i++){
          n<<=8;
          temp=b[i]&mask;
          n|=temp;
      }
      return n;
}

//byte數組轉bitmap

byte[] b = getIntent().getByteArrayExtra("bitmap");  
Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length); 


//將byte數組以16進位的形式列印到控制台

public static void printHexString( byte[] b) {
    StringBuilder str= new StringBuilder();
    for (byte aB : b) {
        String hex = Integer.toHexString(aB & 0xFF);
        if (hex.length() == 1) {
            hex = '0' + hex;
        }
        str.append(hex.toUpperCase()).append(" ");
    }
    Log.i("cmd", str.toString());
}

Bitmap轉string、byte[]

//將Bitmap轉base64字元串

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,90,outputStream );//壓縮90%
byte[] imagebyte = outputStream.toByteArray();
String imageStr = Base64.encode(imagebyte);

//將Bitmap轉byte[]

ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] datas = baos.toByteArray();

 View轉Bitmap

public static Bitmap view2Bitmap(View view) {
      if (view == null) return null;
      Bitmap ret = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
      Canvas canvas = new Canvas(ret);
      Drawable bgDrawable = view.getBackground();
      if (bgDrawable != null) {
          bgDrawable.draw(canvas);
      } else {
          canvas.drawColor(Color.WHITE);
      }
      view.draw(canvas);
      return ret;
}

 Gson高精度String、Float[]互轉(測試可保留6位數以上)

//Float[]轉String

float feature[] = new float[256];
Gson gson = new Gson();
String str = gson.toJson(feature.clone());

//String高精度還原Float[]

Gson gson = new Gson();
float[] f = gson.fromJson(str, float[].class);

 CRC16檢驗

private int CRC16_Check(byte Pushdata[]){
        int Reg_CRC=0xffff;
        int temp;
        int i,j;
        //幀頭校驗字去掉
        for( i = 2; i<Pushdata.length-2; i ++)
        {
            temp = Pushdata[i];
            if(temp < 0) temp += 256;
            temp &= 0xff;
            Reg_CRC^= temp;

            for (j = 0; j<8; j++)
            {
                if ((Reg_CRC & 0x0001) == 0x0001)
                    Reg_CRC=(Reg_CRC>>1)^0xA001;
                else
                    Reg_CRC >>=1;
            }
        }
        return (Reg_CRC&0xffff);
    }

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、存儲過程 1、定義:一組可編程的函數,是為了完成特定功能的SQL語句集,經編譯創建並保存在資料庫中,用戶可通過指定存儲過程的名字並給定參數(需要時)來調用執行 2、優點:①將重覆性很高的一些操作,封裝到一個存儲過程中,簡化了對這些SQL的調用 ②批量處理:SQL+迴圈,減少流量,也就是“跑批” ...
  • 對於資料庫中的樹形結構數據,如部門表,有時候,我們需要知道某部門的所有下屬部分或者某部分的所有上級部門,這時候就需要用到mysql的遞歸查詢 1、創建表 2、初始數據 3、向下遞歸 利用find_in_set()函數和group_concat()函數實現遞歸查詢: 4、調用方式 查詢id為"4"下麵 ...
  • 昨天無意之中看到了該函數,感覺挺有用的一個函數,這裡記錄一下。 有個文章表裡面有個type欄位,它存儲的是文章類型,有 1頭條、2推薦、3熱點、4圖文等等 。現在有篇文章他既是頭條,又是熱點,還是圖文,type中以 1,3,4 的格式存儲。那我們如何用sql查找所有type中有4的圖文類型的文章呢? ...
  • 一.概念 SOS_SCHEDULER_YIELD等待類型是一個任務自願放棄當前的資源占用,讓給其他任務使用。 這個等待類型與CPU有直接關係,與記憶體與也有間接關係,與CPU有關係是因為在sql server里是通過任務調度SCHEDULER來關聯CPU。 通過SCHEDULER下的Worker線程來 ...
  • 【個人經驗】 給大家分享一下,最近Android開發中一個坑。 在Android開發中,有時會需要自己開發服務端,就需要連接自己的電腦。 ①首先,我們得知道我們電腦的ip地址是多少: 開始菜單 >輸入cmd(打開命令視窗黑窗體) >在命令中輸入ipconfig回車 >查看無線區域網適配器 WLAN: ...
  • 最近進行三方安全測試,剩最後一個問題: 原因是我用360加固寶之後,又用了360Signer對apk進行二次簽名,而360Signer是用v1方式對apk進行簽名的,所以安全檢測還是不通過。 下麵給出自己百度出來的對360加固之後的apk進行v2二次簽名的方法。(註意要用同一個keystore) ( ...
  • 打開Andorid Studio,點擊Terminal提示錯誤; 如圖: 經過一番掙扎,嘗試了以下幾種 方法一:打開File -> Settings -> Tools -> Terminal查看路徑是否正確,改成如下圖路徑 方法二:以管理員身份運行 andorid stuido ...
  • - (void)animationAlert:(UIView *)view { CAKeyframeAnimation *popAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; popAnimation.dura ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...