- 浏览: 1591192 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (289)
- java 语法基础 (51)
- spring (8)
- mvc struct /Ant --build.xml (8)
- SOA (0)
- oracle 9i/10g (23)
- sql server 2000-2005 (3)
- 数据库基础知识 (6)
- 设计模式与软件架构 (10)
- Hibernate 持久化 (9)
- J2SE/J2EE/J2ME/AJAX 技术 (8)
- JSF 技术 (3)
- JAVA 图形化 (0)
- JMS (40)
- Eclipse 3.2 IDE 开发技巧 (13)
- 项目处理方法集合 (2)
- html/jsp/javascript (2)
- Unix/Linux (9)
- j2me/ARM/windriver/嵌入式 (4)
- 电信科学 (8)
- jsp (1)
- c/c++ (1)
- LZW压缩算法(java) (2)
- Android (77)
- 版本管理git/svn (2)
最新评论
-
huihai:
有demo吗?
NamingStrategy实现动态表名映射 -
cangbaotu:
推荐给大家一些有用的爬虫源码:https://github.c ...
网络爬虫(源代码参考) -
tuspark:
除了.classpath文件以外,.project文件也应该了 ...
Eclipse .classpath文件浅谈 -
tuspark:
造成eclipse自动关闭的原因有很多,这里有很多介绍:ecl ...
eclipse 自动关闭 解决方案 -
DEMONU:
网上都是这些,这种文章。。。
ActiveMQ中的消息持久性
java二进制,字节数组,字符,十六进制,BCD编码转换
* 把16进制字符串转换成字节数组
* @param hex
* @return
*/
public static byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
}
return result;
}
private static byte toByte(char c) {
byte b = (byte) "0123456789ABCDEF".indexOf(c);
return b;
}
/** *//**
* 把字节数组转换成16进制字符串
* @param bArray
* @return
*/
public static final String bytesToHexString(byte[] bArray) {
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; i < bArray.length; i++) {
sTemp = Integer.toHexString(0xFF & bArray[i]);
if (sTemp.length() < 2)
sb.append(0);
sb.append(sTemp.toUpperCase());
}
return sb.toString();
}
/** *//**
* 把字节数组转换为对象
* @param bytes
* @return
* @throws IOException
* @throws ClassNotFoundException
*/
public static final Object bytesToObject(byte[] bytes) throws IOException, ClassNotFoundException {
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
ObjectInputStream oi = new ObjectInputStream(in);
Object o = oi.readObject();
oi.close();
return o;
}
/** *//**
* 把可序列化对象转换成字节数组
* @param s
* @return
* @throws IOException
*/
public static final byte[] objectToBytes(Serializable s) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream ot = new ObjectOutputStream(out);
ot.writeObject(s);
ot.flush();
ot.close();
return out.toByteArray();
}
public static final String objectToHexString(Serializable s) throws IOException{
return bytesToHexString(objectToBytes(s));
}
public static final Object hexStringToObject(String hex) throws IOException, ClassNotFoundException{
return bytesToObject(hexStringToByte(hex));
}
/** *//**
* @函数功能: BCD码转为10进制串(阿拉伯数据)
* @输入参数: BCD码
* @输出结果: 10进制串
*/
public static String bcd2Str(byte[] bytes){
StringBuffer temp=new StringBuffer(bytes.length*2);
for(int i=0;i<bytes.length;i++){
temp.append((byte)((bytes[i]& 0xf0)>>>4));
temp.append((byte)(bytes[i]& 0x0f));
}
return temp.toString().substring(0,1).equalsIgnoreCase("0")?temp.toString().substring(1):temp.toString();
}
/** *//**
* @函数功能: 10进制串转为BCD码
* @输入参数: 10进制串
* @输出结果: BCD码
*/
public static byte[] str2Bcd(String asc) {
int len = asc.length();
int mod = len % 2;
if (mod != 0) {
asc = "0" + asc;
len = asc.length();
}
byte abt[] = new byte[len];
if (len >= 2) {
len = len / 2;
}
byte bbt[] = new byte[len];
abt = asc.getBytes();
int j, k;
for (int p = 0; p < asc.length()/2; p++) {
if ( (abt[2 * p] >= '0') && (abt[2 * p] <= '9')) {
j = abt[2 * p] - '0';
} else if ( (abt[2 * p] >= 'a') && (abt[2 * p] <= 'z')) {
j = abt[2 * p] - 'a' + 0x0a;
} else {
j = abt[2 * p] - 'A' + 0x0a;
}
if ( (abt[2 * p + 1] >= '0') && (abt[2 * p + 1] <= '9')) {
k = abt[2 * p + 1] - '0';
} else if ( (abt[2 * p + 1] >= 'a') && (abt[2 * p + 1] <= 'z')) {
k = abt[2 * p + 1] - 'a' + 0x0a;
}else {
k = abt[2 * p + 1] - 'A' + 0x0a;
}
int a = (j << 4) + k;
byte b = (byte) a;
bbt[p] = b;
}
return bbt;
}
/** *//**
* @函数功能: BCD码转ASC码
* @输入参数: BCD串
* @输出结果: ASC码
*/
public static String BCD2ASC(byte[] bytes) {
StringBuffer temp = new StringBuffer(bytes.length * 2);
for (int i = 0; i < bytes.length; i++) {
int h = ((bytes[i] & 0xf0) >>> 4);
int l = (bytes[i] & 0x0f);
temp.append(BToA[h]).append( BToA[l]);
}
return temp.toString() ;
}
/** *//**
* MD5加密字符串,返回加密后的16进制字符串
* @param origin
* @return
*/
public static String MD5EncodeToHex(String origin) {
return bytesToHexString(MD5Encode(origin));
}
/** *//**
* MD5加密字符串,返回加密后的字节数组
* @param origin
* @return
*/
public static byte[] MD5Encode(String origin){
return MD5Encode(origin.getBytes());
}
/** *//**
* MD5加密字节数组,返回加密后的字节数组
* @param bytes
* @return
*/
public static byte[] MD5Encode(byte[] bytes){
MessageDigest md=null;
try {
md = MessageDigest.getInstance("MD5");
return md.digest(bytes);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return new byte[0];
}
}
//关于byte: signed byte 把 0x00 ~ 0xff 映射成范围 0~127和 -128~-1 两段,比较简单的办法用 (b+256)%256的办法令其值回到0~255,或者用&0xff并赋给一个int。
发表评论
-
JAVA 线程
2011-01-11 10:32 1289我们可以在计算机上运 ... -
WeakReference
2011-01-11 09:02 2381reachable, the following happen ... -
Java的多线程机制
2010-08-25 23:59 19090程序、进程和线程: ... -
Why would a static inner interface be used in Java?
2010-07-22 11:01 1534Q:I have just found a static in ... -
java中的深拷贝和浅拷贝
2010-07-22 10:58 1471做项目时,可能会碰到这样的一个问题,就是需要把一个对象的属性完 ... -
JAVA 反射
2010-07-22 10:41 1510反射:Class c = Class.forName (&qu ... -
Thinking in java inner classes
2010-07-21 09:44 1185Thinking in java inner cla ... -
1Java 的多重继承与内部类
2010-07-21 09:38 2412<!-- @pa ... -
java插入排序算法
2010-06-29 09:52 1410插入排序算法策略:排序值列中的前2个值,并在必要时交换它们。在 ... -
Java中的volatile关键字
2010-06-12 10:00 1210Java中的volatile关键字 ... -
java 数组排序后,倒过来
2010-01-29 20:11 2778public int[] sort() ... -
用java获取文件夹的大小
2010-01-29 20:09 9538用java获取文件夹的大小 ... -
JAVA移位运算符
2009-12-03 15:50 35650移位运算符就是在二进 ... -
Java内存泄露
2009-02-02 12:02 1912一、问题的提出 Java的一个重要优点就是通过垃圾收集器(Ga ... -
Java 的反射机制基本理解
2008-12-04 17:55 1624Java 的反射机制是使其具有动态特性的非常关键的一种机制,也 ... -
JAVA基础(多线程Thread和Runnable的使用区别
2008-12-04 15:03 44261Runnable是Thread的接口,在大多数情况下“推荐用接 ... -
java解构造器
2008-11-27 10:14 1232解构造器 构造器和方法的区别 摘要 要学习Java,你 ... -
equalsbuilder 示例
2008-11-27 09:32 18861.判断是否为空(null),是则false 2.判断是否 ... -
InputStream,Reader,byte[]数据或字符串的内容拷贝到OutputStream或
2008-11-24 12:54 9145007-07-18 妙用Commons良药<一> ... -
jakarta commons lang:HashCodeBuilder和EqualsBuilder
2008-11-14 14:42 2343在判断两个对象是否相等的时候,会先调用hashCode方法,如 ...
相关推荐
在Java编程中,二进制、字节数组、字符、十六进制和BCD(Binary-Coded Decimal,二进制编码的十进制)编码转换是常见的数据处理任务。以下将详细介绍这些概念以及如何在Java中进行相关操作。 1. **二进制与十六进制...
转换过程分为两步:首先,将3字节的十六进制数转换为24位的二进制数;然后,将24位的二进制数转换为8421BCD码。 步骤1:十六进制转二进制 每个十六进制数字转换为4位二进制,例如: - 十六进制的'1'转换为二进制'...
- `toHexString()`:将BCD编码的字节数组转换为十六进制字符串,便于查看和调试。 - `fromHexString(String hex)`:将十六进制字符串解析为BCD编码的字节数组。 在实际开发中,BCD编码常用于金融系统,如银行、支付...
每个十进制数字被编码为四位二进制数,其中双字节BCD码由两个这样的四位二进制数字组成,能表示0到99的十进制数。这种编码方式常用于财务计算、电子表单和数字显示设备,因为它可以精确地保持十进制精度,避免了浮点...
在Android开发中,有时我们需要处理二进制数据,特别是当涉及到通信协议或者存储紧凑型数据时,BCD(Binary-Coded Decimal,二进制编码的十进制)码是一种常用的表示方式。BCD码是一种将十进制数字用二进制形式表示...
西门子WORD转二进制点位分析图解
本实验的目标是将存储在特定内存地址处的四个非压缩BCD数转换为二进制数码,并用十六进制数表示。 **具体要求**: - 输入:四个非压缩BCD数存储在0500H至0507H的内存单元中。 - 输出:将转换后的二进制数码(十六...
- **字符编码**:ASCII编码用于表示英文字符,汉字编码(如GBK、Unicode)用于表示中文字符,BCD码(二进制编码的十进制)则用于高效地存储和处理十进制数字。 4. **不同进制的表示和换算**: - **二进制**、**十...
在单片机编程中,有时我们需要将BCD(Binary Coded Decimal,二进制编码的十进制)码转换为16进制数,以便进行更高效的数据处理或通信。AT89C51是一款经典的8位单片机,常用于嵌入式系统设计,它支持汇编语言编程。...
`Base64.encodeBytes()`方法用于将字节数组编码为Base64字符串,而`Base64.decodeBase64()`则用于将Base64字符串解码回原始字节数组。 2. **URL编码和解码**: - `UrlCodec`类处理URL编码和解码。URL中可能包含非...
1、由ASICC编码的字符串转换为十六进制byte数组 2、将指定字节数组中的一个字节序列解码为一个字符串 3、将二进制字符串转化为byte类型 4、将SIM卡号转化为byte数组 5、将BCD[6]转换为12位数字字符串 6、关于IP...
**1.8 将下列十进制数分别转换为二进制、十六进制、二进制补码、压缩 BCD 码和 ASCII 码** - **108** - 二进制:01101100 - 十六进制:6CH - 二进制补码:01101100 - 压缩 BCD 码:01010100 - ASCII 码:d ...
本资源提供的是易语言关于BCD码(Binary-Coded Decimal,二进制编码的十进制数)处理大小写的源码,这对于编写处理数字格式和字符串格式转换的程序来说是非常重要的。 BCD码是一种将十进制数字编码为二进制形式的...
9. **BCD码**:二进制编码的十进制码(BCD)是一种特殊编码,用于表示十进制数字。 10. **ASCII码**:ASCII码是7位二进制编码,用于表示128个不同的字符。 11. **十六进制与八进制转换**:十六进制数7A转换为八...
"CNV.rar_Enjoy_To Ascii_ascii to hex_from hex_hex"这个压缩包文件的主题聚焦于ASCII与十六进制(Hex)之间的转换,以及可能涉及的其他相关转换,如十六进制到BCD(二进制编码的十进制)。让我们深入探讨这些概念...
本实验报告主要关注三种类型的数码转换:ASCⅡ码转换为非压缩型BCD码、BCD码转换为二进制数以及十六进制数转换为ASCⅡ码。这些转换在计算机系统内部进行数据处理和表示时是至关重要的。 实验的目的旨在让学生掌握...
- **BCD格式存储:** IBM选择8位字节的原因之一是它们易于以BCD(Binary-Coded Decimal)格式存储,这是一种将十进制数以二进制形式编码的方法。 - **文本表示:** 字节非常适合表示大多数书写语言的字符集,因为...
实验三“二进制ASCII码转换”是单片机学习中的一个重要实践环节,旨在帮助学生理解和掌握数值在BCD码和ASCII码之间的转换方法。在这个实验中,主要的知识点包括: 1. **BCD码(Binary-Coded Decimal)**:BCD码是一...