java bits_一段关于JAVA程序升级的问题(Changing bits)
展开全部
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
public class BitChanger {
public static void main(String[] args) {
try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(Exception e){}
String s="HELLO";
System.out.println(s);
System.out.println(toBinaryString(s));
System.out.println(toHexString(s));
System.out.println(changeBit(toBinaryString(s),12));
System.out.println(toNormalString(changeBit(toBinaryString(s),12)));
System.out.println(toHexString(toNormalString(changeBit(toBinaryString(s),12))));
JFrame f=new JFrame("Bit changer v1.0");
f.setSize(433,230);
f.setDefaultCloseOperation(3);
f.getContentPane().setLayout(null);
JLabel l1=new JLabel("Enter a string:");
final JTextField input=new JTextField(20);
final JLabel binary=new JLabel();
final JLabel hex=new JLabel();
JLabel l2=new JLabel("Enter the Bit number to flip:");
final JTextField flip=new JTextField(5);
JButton change=new JButton("Change
Bit");
JButton exit=new JButton("Exit");
l1.setBounds(10,10,100,25);
input.setBounds(110,10,100,25);
binary.setBounds(10,45,400,25);
hex.setBounds(10,80,400,25);
l2.setBounds(10,115,208,25);
flip.setBounds(220,115,40,25);
change.setBounds(270,115,68,45);
exit.setBounds(123,150,60,30);
f.add(l1);
f.add(l2);
f.add(input);
f.add(binary);
f.add(hex);
f.add(flip);
f.add(change);
f.add(exit);
f.setVisible(true);
binary.setBorder(BorderFactory.createLineBorder(Color.blue));
hex.setBorder(BorderFactory.createLineBorder(Color.red));
input.addCaretListener(new CaretListener(){
public void caretUpdate(CaretEvent e) {
binary.setText(toBinaryString(input.getText()));
hex.setText(toHexString(input.getText()));
}});
change.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
try{
int id=Integer.parseInt(flip.getText().trim());
input.setText(toNormalString(changeBit(toBinaryString(input.getText()),id)));
}catch(Exception ex){}
}});
exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.exit(-1);
}});
}
private static String toNormalString(String binary){
String[] sp=binary.split(" ");
String v="";
for(int i=0; i
v+=(char)Integer.valueOf(sp[i],2).intValue();
}
return v;
}
private static String changeBit(String s,int bi){
if(s.isEmpty())return s;
int cid=bi/8;
int bid=bi%8;
char ch=s.charAt(cid*9+bid-1);
ch=ch=='0'?'1':'0';
s=s.substring(0,cid*9+bid-1)+ch+s.substring(cid*9+bid);
return s;
}
private static String toBinaryString(String s) {
if(s.isEmpty())return s;
String v="";
for(int i=0; i
String bs=Integer.toBinaryString(s.charAt(i));
while(bs.length()<8)
bs='0'+bs;
v+=bs+" ";
}
return v;
}
private static String toHexString(String s){
if(s.isEmpty())return s;
String v="";
for(int i=0; i
String bs=Integer.toHexString(s.charAt(i));
v+=" "+bs.toUpperCase()+" ";
}
return v;
}
}
本回答由提问者推荐
已赞过
已踩过<
你对这个回答的评价是?
评论
收起
java bits_一段关于JAVA程序升级的问题(Changing bits)相关推荐
- 在记事本上用java写一段代码,程序到底是如何跑起来的?
首先我们在记事本上写一段代码,并把类型改成java文件 不知道大家有没有想过,当我们写下这样一段代码,计算机是如何来运行它的? 它的运行路径如下: 第一步:我们在记事本上写代码,它是一个.java文件 ...
- java写一段程序代表心情_讨论java初步学习的方法及心情
Java的重要性 Java语言的三大特点,面向对象.良好的跨平台性和健壮性,这三大特点使Java被广大编程人员接收并且使用.Java的核心机制有Java虚拟机和垃圾回收机制这两种,Java虚拟机通过解 ...
- 上班太难熬?想知道还有多久时间下班?分享一段下班倒计时程序(Java版)(#^.^#)
先看效果 上代码(中文命名纯属好玩) import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; impo ...
- java性能监视_Java 9和应用程序性能监视的激动人心之处
java性能监视 通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序. 开始免费试用! 在当今的现代计算时代,软件创新的不断增强使我们更接近软件革命 ...
- Java中合法的关键词_优秀程序员必须掌握的java中50个关键字
关键字和保留字的区别 正确识别java语言的关键字(keyword)和保留字(reserved word)是十分重要的.Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表 ...
- Java 锁相关知识汇总及锁升级
Java 锁相关知识汇总及锁升级 锁的基础知识 什么是Synchronized 锁的四种状态 类相关信息 32位虚拟机对象头 64位虚拟机对象头 CAS 锁消除 锁粗化 Lock Record 偏向锁 ...
- 怎么才能学好Java?月薪35K阿里P9程序员给出了这样的建议!
正在学习Java 计算机语言并且打算作为自己今后的发展方向,不幸的是你在学习中遇到了比较困惑而又不能解决的问题, 你必需要明确以下几个很重要的问题和掌握相对正确和适合自己学习编程的方法,从而为自己解惑 ...
- Java已死?九百万程序员说不
Java没死,事实上它拥有足够的能量让你的应用跑起来.那些对Java吹毛求疵人频繁地聚焦在一些小众问题上,总是和其他技术或者语言做些不公平的对比,这些语言并没有像Java一样得到广泛应用及长远的历史. ...
- java run里面定义变量_Java程序员50多道最热门的多线程和并发面试题(答案解析)...
下面是Java程序员相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器 ...
最新文章
- Python游戏开发:最强大脑第一关,数字华容道
- 关于程序中数据库报错“父项未找到”
- Facebook全球6小时宕机原因已查明:一条指令所致,内部工程师所为
- 指向函数的指针--转
- angr学习笔记(3)
- Java创建多线程的8种代码方式
- python首页展示业务逻辑_每日一程-4. PyQt5-实现显示和业务逻辑分离
- Spring是如何利用“三级缓存“巧妙解决Bean的循环依赖问题
- 利用.NET绘图技术制作水晶按钮控件(转)
- FTP 编程 5 文件传输与目录切换
- 基于SURF特征的目标检测
- yealink学习笔记20200422UVC协议、usb摄像头抓包
- android 校验手机号码,检查Android中的有效手机号码
- Blender简单建模
- 智能人物画像综合分析系统——Day16
- 1016: 委派任务*
- 老熊:RAC数据库频繁hang问题诊断案例
- u盘引导 在SSD+HHD配置下安装ubuntu16.04
- 【毕业设计 | 开源】我把商业级仓库管理系统 ModernWMS 开源了
- android u盘地址,android 9.0 获取U盘路径
热门文章
- E103-W01产品WiFi无线模块快连技术在智能家居中的应用
- mysql autoenlist默认_mysql连接参数详解
- 蓝桥杯基础模块7:PWM脉宽调制
- 集团bim对集团项目服务器,BIM再添一员,五洋建设集团BIM项目组举行成立仪式
- 华测数据导出方法_输电线路塔基测量成图方法研究与应用
- matlab曲线拟合 最低点,Matlab曲线拟合 最小二乘法 polyfit【转】
- 安装指定版本pytorch_Ubuntu16.04安装pytorch(七)
- javaweb 需要对表格建立实体类吗_如何采用java界面编程建立一个表格
- springboot实践1
- C#基础加强(8)之委托和事件