1. java里面二进制 八进制 十进制 十六进制怎么互相转换,有什么规律
=============(正)十进制转二进制
除二将余数倒置
eg: 127 /2
商:63 /2 31 /2 15 /2 7 /2 3 /2 1
余数:1 1 1 1 1 1
1111111
=============(负)十进制转二进制
1、先求负数绝对值的二进制
2、将得到的二进制完全取反+1
eg: -12
1、0000 1100
2、1111 0011 + 1 = 1111 0100
=============(正)十进制转八进制
除八将余数倒置
eg:54 /8 =66
6
6
=============(负)十进制转八进制
1、先将十进制转为二进制
2、再将二进制转为八进制
eg:-32
1、0010 0000
2、1110 0000
3、三位三位转
340
=============十进制转十六进制
1、先将十进制转为二进制
2、将二进制转为十六进制
=============二进制转为十进制
(正)二进制位上的各个数字乘以以2为底数,以自然数为次幂(自然数从0开始)
0110 1011 1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 + 0*2^4 + 1*2^5 + 1*2^6 = 107
(负)
1、首先得到负号
2、将该二进制数取反+1
3、将得到的数转为十进制加上负号。
=============二进制转八进制
(1)将二进制三个三个分为一组,分别求出每组二进制的八进制值,将所得到的值依次排开
(2) 1、将二进制转为十进制
2、将十进制转为八进制
============二进制转十六进制
将二进制四个四个分为一组,分别求出每组二进制的十六进制值,将所得到的值依次排开
============八进制转二进制
(1)将八进制各个位上的数单个转为二进制,不足三位的补0
eg:127 001 010 111
(2) 1、将八进制转为十进制
2、再将十进制转为二进制
============八进制转十进制
八进制位上的各个数字乘以以8为底数,以自然数为次幂(自然数从0开始)
543 3*8^0 + 4*8^1 + 5*8^2 = 355
============八进制转十六进制
1、先将八进制转为二进制
2、再将所得的二进制转为十六进制
============十六进制转二进制
将十六进制各个位上的数单个转为二进制,不足四位的补0
eg:127 0001 0010 0111
============十六进制转其他进制
都需要先转为二进制,再转为其他进制
2. 用JAVA把二进制数转换成十进制数。
一楼回答的非常详尽了哈,
就是感觉太多了,
个人觉得,比较常用的就是Integer的parseInt()方法,
使用起来也非常方便:
int a = Integer.parInt("你的二进制数", 2);
3. 用java实现java的2进制文件字节序转换到C/C++的2进制文件字节序
传输的时候没问题,主要是写的时候,这有个文件编码的问题,编码统一就好了。
4. 怎么实现 将 二进制与字符串的互相转换,C,C++,Java实现都可以。
//既然别人说我不是人,那我就做个神,我来回答你的问题好了,你不无聊
importjava.util.Scanner;
publicclassKaiba
{
privatestaticStringstr2Bin(Stringstr)
{
char[]strChar=str.toCharArray();
Stringresult="";
for(inti=0;i<strChar.length;i++)
{
result+=Integer.toBinaryString(strChar[i])+"";
}
returnresult;
}
privatestaticStringbin2Str(Stringbin)
{
Stringresult="";
String[]strs=bin.split("\s+");
for(inti=0;i<strs.length;i++)
{
Stringstr=strs[i];
result+=newString(Character.toChars(Integer.parseInt(str,2)));
}
returnresult;
}
publicstaticvoidmain(String[]args)
{
Scannerscanner=newScanner(System.in);
Stringbin=scanner.nextLine().trim();
System.out.println(bin2Str(bin));
Stringstr=scanner.nextLine().trim();
System.out.println(str2Bin(str));
scanner.close();
}
}
5. 用java实现java的2进制文件字节序转换到C/C++的2进制文件字节序
package admit.action;/*用JAVA读取各种计算机文件系统的文件列表 当你安装了jdk,在jdk的类库里,有一个标准的File类,通过该类,可以很方便的实现浏览各种文件系统的功能。
File类:
java.lang.Object
|
+--java.io.File
File类扩展了Object对象,实现了Serializable, Comparable定义的接口,可以通过File的一个实例对jvm上的文件系统进行各种操作,下面我编写了一个FileViewer类,该类通过Iterator类将一个文件列表实现对列表的迭代操作
FileViewer.java */import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.Vector;public class ReadPath {
File myDir; File[] contents; Vector vectorList; Iterator currentFileView; File currentFile; String path; public ReadPath() {
path = new String("");
vectorList = new Vector();
} public ReadPath(String path) {
this.path = path;
vectorList = new Vector();
} /**
* 设置浏览的路径
*/
public void setPath(String path) {
this.path = path;
} /***************************************************************************
* 返回当前目录路径
*/
public String getDirectory() {
return myDir.getPath();
} /**
* 刷新列表
*/
public void refreshList() { if (this.path.equals(""))
path = "c:\\";
myDir = new File(path); vectorList.clear();
contents = myDir.listFiles();
// 重新装入路径下文件
for (int i = 0; i < contents.length; i++) {
vectorList.add(contents[i]);
}
currentFileView = vectorList.iterator();
} /**
* 移动当前文件集合的指针指到下一个条目
*
* @return 成功返回true,否则false
*/
public boolean nextFile() {
while (currentFileView.hasNext()) {
currentFile = (File) currentFileView.next();
return true;
}
return false;
} /**
* 返回当前指向的文件对象的文件名称
*/
public String getFileName() {
return currentFile.getName();
} /**
* 返回当前指向的文件对象的文件尺寸
*/
public String getFileSize() {
return new Long(currentFile.length()).toString();
} /**
* 返回当前指向的文件对象的最后修改日期
*/
public String getFileTimeStamp() {
return new Date(currentFile.lastModified()).toString();
} /**
* 返回当前指向的文件对象是否是一个文件目录
*/
public boolean getFileType() {
return currentFile.isDirectory();
} /*
* 通过setPath()方法设定要浏览的目录(注意如果操作系统为微软操作系统,每个路径分隔符应写成两个斜杠\),nextFile()方法用来移动列表记录,可以通过getFileName()得到文件或文件夹名称,通过getFileSize()得到文件尺寸,通过getFileTimeStamp()得到文件的最后修改时间,通过getFileType()判断是否是一个文件目录。
* 编写一个test例子测试这个FileViewer类
*/ public ArrayList okpath(){
ReadPath f = new ReadPath();
f.setPath("c:\\aaa\\");
f.refreshList();
ArrayList list = new ArrayList();
while (f.nextFile()) {
list.add(f.path+f.getFileName());
}
return list;
}
/* public static void main(String[] args) {
ReadPath f = new ReadPath();
ArrayList list1 = f.okpath();
for(int j=0;j<list1.size();j++){
System.out.println(list1.get(j));
}
}*/ }
package admit.action;
import java.sql.*;
import java.util.ArrayList;
import java.io.*;
import oracle.sql.*;
public class WriteBlob { public static void main(String[] args) {
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.100:1521:adminsys","admit","wuyue");
conn.setAutoCommit(false);
ReadPath readPath=new ReadPath();
ArrayList list = readPath.okpath();
/* String ff[]=new String[2];
String fileName = "c://tupian.gif"; */
for(int i=0;i<list.size();i++){
System.out.println("路径名="+list.get(i).toString());
File f = new File(list.get(i).toString());
FileInputStream fin = new FileInputStream(f);
BLOB blob = null; PreparedStatement pstmt = conn.prepareStatement("insert into javatest(name,context) values(?,empty_blob())");
pstmt.setString(1,""+list.get(i).toString()+"");
pstmt.executeUpdate();
pstmt.close(); pstmt = conn.prepareStatement("select context from javatest where name= ? for update");
pstmt.setString(1,""+list.get(i).toString()+"");
ResultSet rset = pstmt.executeQuery();
if (rset.next()) blob = (BLOB) rset.getBlob(1); pstmt = conn.prepareStatement("update javatest set context=? where name=?"); OutputStream out = blob.getBinaryOutputStream(); int count = -1, total = 0;
byte[] data = new byte[(int)fin.available()];
fin.read(data);
out.write(data);
/*
byte[] data = new byte[blob.getBufferSize()]; 另一种实现方法,节省内存
while ((count = fin.read(data)) != -1) {
total += count;
out.write(data, 0, count);
}
*/
fin.close();
out.close(); pstmt.setBlob(1,blob);
pstmt.setString(2,""+list.get(i).toString()+"");
pstmt.executeUpdate();
pstmt.close();
System.out.println("插入成功!!!");
}
conn.commit();
conn.close();
} catch (SQLException e) {
System.err.println(e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
}
6. Java二进制反转
public class BinaryReverse
{
private static String s = null;
public static void main(String[] args)
{
BinaryReverse br = new BinaryReverse();
Scanner sc = new Scanner(System.in);
byte tempbyte;
System.out.println("请输入要反转的数字:");
s = sc.nextLine();
tempbyte = Byte.valueOf(s);
tempbyte = br.converse(tempbyte); //开始反转
System.out.println("翻反转后十进制: " + tempbyte);
}
public Byte converse(Byte c)
{
String binaryString = null;
StringBuffer needAdd = new StringBuffer();
binaryString = Integer.toBinaryString(Math.abs(c));
System.out.println(binaryString);
if (s.startsWith("-"))
{
if (binaryString.length() < 8)
{
needAdd.append("1");
}
}
else
{
if (binaryString.length() < 8)
{
needAdd.append("0");
}
}
for (int i = 0; i < (7 - binaryString.length()); i++)
{
needAdd.append("0");
}
binaryString = needAdd.append(binaryString).toString();
System.out.println("原数二进制为: " + binaryString);
String reverseString = needAdd.reverse().toString();
System.out.println("反转后二进制为: " + reverseString);
if (s.startsWith("-"))
{
int i = 0;
for (int j =reverseString.length(),y = 0 ; j > 1 ; j--,y++)
{
i = (int) (i + Integer.valueOf(reverseString.charAt(j-1)+"")*Math.pow(2,y));
}
if (reverseString.charAt(0) == '1')
{
i = -i;
}
return (byte)i;
}
return Byte.valueOf(reverseString,2);
}
}
不要忘了加分哦
7. 求java编程 二进制十进制互相转化
java中有现在的api
10进制转二进制
Integer.toBinaryString(int i);
8. java二进制的数字与字符串互转
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
public class Convert {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String x;
x = sc.next();
String ZERO = "00000000";
byte[] bs = x.getBytes(StandardCharsets.UTF_8); //如果不采用默认的UTF-8格式编码,那么一个汉字相当于两个字节,一个字节就是8个二进制数(8bit)
System.out.println(bs.length+"-------------");
for (byte b : bs) {
String s = Integer.toBinaryString(b);
if (s.length() > 8) {
s = s.substring(s.length() - 8);
} else if (s.length() < 8) {
s = ZERO.substring(s.length()) + s;
}
System.out.println(s);
}
}
}
9. java中如何将十进制数字转化成二进制
如果表达小于2^31-1的正数代码如下:
public void binaryToDecimal(int n){
int t = 0; //用来记录位数
int bin = 0; //用来记录最后的二进制数
int r = 0; //用来存储余数
while(n != 0){
r = n % 2;
n = n / 2;
bin += r * Math().pow(10,t);
t++;
}
System.out.println(bin);
}
使用字符串的拼接(+)来实现大于2^31-1的数,代码如下:
public void binaryToDecimal(int n){
String str = "";
while(n!=0){
str = n%2+str;
n = n/2;
}
System.out.println(str);
}
可以右移后再与0x01进行&运算得到第一位的数字判断判断它的第几位上是0,第几位上是1,代码如下:
class ByteMove
{
public static void main(String[] args)
{
int i = 7;
move(i);
}
static void move(int num){
for(int i= 0;i<6;i++){
System.out.println("第"+(i+1)+"位:" + (num >> i & 0x01));
}
}
}