关于byte 进制 float String 编码 16进制字符串转16进制byte的问题

首先 只有String才与编码有关;

byte与其他类型转换时,要注意大端点还是小端点,

编码: Ascii
Unicode gbk utf-8等等 

byte 占 8位 可由两个16进制数(0xff)组成,一个16进制占4位,也可由8位二进制数组成等等,与编码没关系,但可用2进制表示,也可由其他进制表示。

0xff”这样的16进制字符串转换成16进制byte

String[] s="0X0C 0X03 0X00 0X04 0X00 0X02 0X84 0XD7".replace("X", "x").split(" ");
byte[] b=new byte[s.length];
for(int i=0;i<s.length;i++){
b[i]=(byte)Integer.parseInt(s[i].substring(2),16);
}
System.out.println(Arrays.toString(b));

把byte[n]转换成String;

new String(byte[n],0,length,"gbk");

float占 4字节 ,float与byte类型转换

都是通过移位来实现的

 4byte转换成float

左移位
/**
* 字节转换为浮点

* @param b 字节(至少4个字节)
* @param index 开始位置
* @return
*/
public static float byte2float(byte[] b, int index) {  
   int l;                                           
   l = b[index + 0];                                
   l &= 0xff;                                       
   l |= ((long) b[index + 1] << 8);                 
   l &= 0xffff;                                     
   l |= ((long) b[index + 2] << 16);                
   l &= 0xffffff;                                   
   l |= ((long) b[index + 3] << 24);                
   return Float.intBitsToFloat(l);                  
}

  float转换成4byte

   右移位

/**
 *
浮点转换为字节
 * 
 *
@param f
 *
@return
 */
public
static byte[] float2byte(float f) {

//
把float转换为byte[]
int
fbit = Float.floatToIntBits(f);

byte[]
b = new byte[4];  
  
 for (int i = 0; i < 4; i++) {  
  
     b[i] = (byte) (fbit >> (24 - i * 8));  
  
 } 
  
 
  
 // 翻转数组
int
len = b.length;
//
建立一个与源数组元素类型相同的数组
byte[]
dest = new byte[len];
//
为了防止修改源数组,将源数组拷贝一份副本
System.arraycopy(b,
0, dest, 0, len);
byte
temp;
//
将顺位第i个与倒数第i个交换
for
(int i = 0; i < len / 2; ++i) {
temp
= dest[i];
dest[i]
= dest[len - i - 1];
dest[len
- i - 1] = temp;
}
  
 
  
 return dest;
  
 
}

时间: 2024-09-20 00:11:19

关于byte 进制 float String 编码 16进制字符串转16进制byte的问题的相关文章

vb.net 字符串转16进制

问题描述 字符串1:sd13A你好字符串2:2014年08月23日星期六8:59:23把字符串转16进制---------求代码!再把16进制转回中文---求代码!额,就是求互转代码!新手求助! 解决方案 解决方案二:"字符串转16进制"这个说法缺乏必要的逻辑性.只有一个整数才能表现为2进制.8进制.10进制.16进制之类的概念.字符串是一个高级的概念,那么你的逻辑就应该稍微高级一点.比如说"unicode编码的byte[]数组"."byte[]数组的ba

[HOWTO]ORACLE中如何实现ASC字符串和16进制串互相转换

oracle|转换|字符串 ORACLE中如何实现ASC字符串和16进制串互相转换 欢迎大家同我交流:enhydraboy   enhydra_boy@tom.com 欢迎转载,请保留本声明,谢谢! 下面是笔者以前回答csdn论坛上问题的总结,希望对大家有用. ASC字符串==>16进制串 create or replace function AscToHex(sIn IN varchar2)RETURN varchar2ISsTmp varchar2(4000);i integer;BEGIN

c语言-如何将数字字符串转为16进制字符串?

问题描述 如何将数字字符串转为16进制字符串? 请教一个示例:如何将数字字符串转为16进制字符串?字符串:char str[20]="1234567890123456";将中间的"789012"转换为16进制的"0C0A14":最后str=""1234560C0A143456"" 如果有描述不清的地方,请指出.多谢! 解决方案 你先用字符串截取到 比如strstr等,""789012&q

C语言实现字符串中(10进制和16进制)转成十进制数

如何将字符串中的10进制数和16进制数提取出来,看以下代码: #include <stdio.h> typedef char TUINT8 ; typedef int TUINT32; TUINT32 Read_DecNumber(const TUINT8* str); TUINT32 Read_HexNumber(const TUINT8* str); int main(void) { int ret = Read_DecNumber("1000"); int d = R

php 打印出字符串的16进制

 代码如下 复制代码 <?php /* php 打印出字符串的16进制数据 */ function hex_dump($data, $newline="n") {   static $from = '';   static $to = '';     static $width = 16; # number of bytes per line     static $pad = '.'; # padding for non-visible characters     if ($

关于PHP中字符串与多进制转换函数的实例代码_php实例

转换函数 /** * [字符串转换为(2,8,16进制)ASCII码] * @param string $str [待处理字符串] * @param boolean $encode [字符串转换为ASCII|ASCII转换为字符串] * @param string $intType [2,8,16进制标示] * @return string byte_str [处理结果] * @author alexander */ function strtoascii($str, $encode=true,

关于PHP中字符串与多进制转换函数的实例代码

转换函数 /** * [字符串转换为(2,8,16进制)ASCII码] * @param string $str [待处理字符串] * @param boolean $encode [字符串转换为ASCII|ASCII转换为字符串] * @param string $intType [2,8,16进制标示] * @return string byte_str [处理结果] * @author alexander */ function strtoascii($str, $encode=true,

将Byte数组转化为String

数组 问题 FCL得很多方法的返回值都是包含字符的Byte数组而不是返回一个String,这样的方法包含在如下的类中: · System.Net.Sockets.Socket.Receive · System.Net.Sockets.Socket.ReceiveFrom · System.Net.Sockets.Socket.BeginReceive · System.Net.Sockets.Socket.BeginReceiveFrom · System.Net.Sockets.Network

c# sting byte byte-c#中,string转byte的几个问题,求高手解答!

问题描述 c#中,string转byte的几个问题,求高手解答! 注意哦,是byte 而不是byte[]; string nameStr = textBox_name.Text.ToString(); byte[] buffer = System.Text.Encoding.Default.GetBytes(nameStr); ----上述是string转byte[] 但是byte 到 short.ushort.int.uint.long.ulong.float.double 或 decimal