1. 程式人生 > >java實現任意進位制的互相轉換

java實現任意進位制的互相轉換

首先宣告此工具類是借鑑前輩的程式碼寫的,工具類主要用於專案中需要生成一個key id,包括日期時間和mac,又要儘可可能資料量小並具有可讀性,可能我選為0-9,A-Z和幾個符號搭配成42進位制,具體程式碼如下, 你亦可能改變code_string,改為自己想要的程式碼,就可能實現簡單的資料加密了…

package com.freestyle.utils;  

import java.util.Stack;  

/**** 
 * 數字工具,進行42以下的任意進位制轉換 
 * @author dgmislrh 
 */  
public class NumericalUtil {  
    private
static final String C_CODES_STRING = "[email protected]#$.`"; /*** * 將10進位制轉換為42進位制 * @param intVal * @return */ public static String int2CodeString(int intVal) { return int2CodeString(intVal, C_CODES_STRING.length()); } /*** * 將10進位制轉換為任意進位制 * @param
intVal * @param base <=42 * @return */
public static String int2CodeString(long intVal,int base) { int w_code_len = C_CODES_STRING.length(); if (base >w_code_len){ return null; } StringBuilder sb = new StringBuilder(); Stack<String> s=new
Stack<String>(); while (intVal!=0){ s.push(C_CODES_STRING.charAt((int)(intVal%base))+""); intVal/=base; } while (!s.empty()){ sb.append(s.pop()); } return sb.length()==0?"0":sb.toString(); } /*** * 任何進位制轉換, * @param s * @param srcBase s的進位制 * @param destBase 要轉換為的進位制 * @return */ public static String BaseConvert(String s,int srcBase,int destBase){ if(srcBase == destBase){ return s; } char[] chars = s.toCharArray(); int len = chars.length; if(destBase != 10){//目標進位制不是十進位制 先轉化為十進位制 s = BaseConvert(s,srcBase,10); }else{ long n = 0; for(int i = len - 1; i >=0; i--){ n+=C_CODES_STRING.indexOf(chars[i])*Math.pow(srcBase, len - i - 1); } return String.valueOf(n); } return int2CodeString(Integer.valueOf(s),destBase); } }

相關推薦

java實現任意互相轉換

首先宣告此工具類是借鑑前輩的程式碼寫的,工具類主要用於專案中需要生成一個key id,包括日期時間和mac,又要儘可可能資料量小並具有可讀性,可能我選為0-9,A-Z和幾個符號搭配成42進位制,具體程式碼如下, 你亦可能改變code_string,改為自己想要的

Java實現任意轉換

問題:將m進位制num轉換為n進位制 (2 <= m,n <= 62) ? 總體思路是:先將m進位制轉換為10進位制,再將10進位制轉為n進位制。 1、m進位制數num轉為10進位制

Java任意轉換

程式碼演示 public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Syste

C語言實現任意轉換程式碼及解析

問題描述 給定一個 M 進位制的數 x,實現對 x 向任意的一個非 M 進位制的數的轉換。 問題分析 掌握不同數制間的轉換關係是解決問題的關鍵,這裡所說的數制一般包括二進位制、八進位制、十六進位制及十進位制。除了不同的數制還有下面幾個必須要了解的概念。 基數:在一種數制中,只能使用一組固定的數字來表示

javascript實現任意間的轉換

<body> <input type="text" name="startR" placeholder="初始進位制"> <input type="text" name="endR" placeholder="目標進位制"> <input typ

java將16與10互相轉換

今天遇到了進位制轉換的有趣問題,記錄下來。 1,首先,10進位制轉16進位制,大家應該都比較熟: Integer x = 666; String hex = x.toHexString(x); System.out.println(hex); 打印出來

JAVA實現10的數轉化為任意n的數

我們仔細想想,要實現10進位制數轉化為任意n進位制的數,其實是可以用棧來實現的。 根據計算機的進位制轉換知識我們知道,10進位制數num轉化為n進位制(比如n=2),我們就是先進行num % n 操作,餘數不斷的除以2,直到餘數為零。然後把商按照從下到上的順序排列。(具體怎

JAVA 實現36轉換數字 超級簡單方法……

這個事很雷人,我有個需求需要生成36進位制的唯一id。 然後再網上找了很久10-36進位制轉化的方法,然後秀秀改改寫了個幾十行的方法,一大堆case…… 網上大部分資料都是自己寫方法的哦…… 然後忽然發現了JAVA 大神早就準備好了這個方法。 Long.toStri

C語言實現任意數之間的轉換

使用C語言程式設計實現任意進位制數(2-16進位制)轉換為其他任意進位制數(2-16進位制),實驗平臺:vs2015。 #include<stdio.h> #include<str

關於Java實現轉化(運算)

一、需求: 最近在做檔案傳輸的東西,檔案傳輸當然是傳輸很重要,包括編碼格式以及進位制的統一。 簡略的說一下這次做的東西:首先檔案是按照塊來發送的,一塊一塊大的發,但是,傳送的過程是這樣的; 先發送頭部,頭部包括三部分:1.一個int型別的檔案Id,               2.一個long型別的偏

十進位制與任意轉換

任意進位制轉為十進位制 方法:∑i n 係數X基數權值(累加) 將二進位制轉成十進位制 10110110 = 1×27+1×25+1×24+1×22+1×2 = 128+32+16+4+2=182

隨筆-數字(任意轉換為十六

題目: 給定一個整數,編寫一個演算法將這個數轉換為十六進位制數。對於負整數,我們通常使用 補碼運算 方法。 注意: 十六進位制中所有字母(a-f)都必須是小寫。 十六進位制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元’0’來表示;對於其他情況,十六進位制字串

C#中二進位制、十進位制和十六互相轉換的方法

二進位制在C#中無法直接表示,我們一般用0和1的字串來表示一個數的二進位制形式。比如4的二進位制為“100”。下面介紹C#裡面用於進位制轉換的方法。 十進位制轉換為二進位制(int-->stri

用鏈棧實現任意的轉化

      任意進位制的轉化基本思路是以十進位制為中轉,先將其他進位制轉為十進位制,再由十進位制轉目的進位制 /* 棧的結構型別 */ typedef char ElemType; typedef struct Stack{ ElemType elem[N];

VC++中字串與十六互相轉換

//字串CString 轉換成CString型別的十六進位制串********************************************************************************** CString ConvertCStringoH

任意轉換(佇列實現儲存和輸出)

#include <stdio.h> #include <stdlib.h> #define maxsize 1000000 **//定義佇列** typedef struct { char c[maxsize]; int top; }seqstack

JAVA 轉換 十進位制轉任意

public static void tran(int a,int b){ String []table ={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; ArrayList&

Java 整數型的間的互相轉換

/** * 整數型, 進位制間的互相轉換 */ public class IntConversion { public static void main(String[] args) { int num = 38 ; String str1 = Integer.t

【資料結構】順序表實現十進位制轉換任意

/* & File : 進位制準換 * Author : Laugh * Copyright: Laugh * 主題 :對於輸入的任意一個非負十進位制小數,列印輸出與其等值的任意進位制小數 * Date : 2018/10/14 */

Java——任意轉換為十進位制

1.  方法一(呼叫系統方法)  package demo; import java.util.Scanner; /** * 任意進位制轉換為 十 進位制 * @author 時光·漫步 * */ public class Test{ public