java中怎么将一个int转成高位在前的byte

java中怎么将一个int转成高位在前的byte,第1张

一个byte是8位,一个int是16位,int转换成byte是将前(左)8位舍弃,留后8位。
88+68=156,转换成int型2进制为0000000010011100,再强转成byte就是10011100,因为最高位为符号位,也就是表示正负的位,
所以这里的1代表负数,剩下的按照原码、补码的规则换算回来就是100,所以是-100!

int数组和byte数组唯一的差别,只是他们的元素的取值范围不同
最简单直观的方法,就是用for循环,逐个用int数组的元素为byte数组中的元素赋值
赋值的时候注意检查一下是否在byte的取值范围内

C++int型变量转换成一个byte
c++是兼容c语言的,因此c语言的编程对c++也适用,
int型的变量变成字节型(Byte),可以使用强制转换,使用方法如下:
int a=120;
a=(char)a;
那么a就会转化成了字节型(Byte型)
值得注意的是,int是双字节型的数,变成单字节的时候,高字节的数会自动省去。

个int怎么转换为bytes[]呢?如果一定要做也行。byte是8位的二进制,int是32位的二进制,可以将32位拆开,放入byte[]中。这就是原理。具体做法:调用Integer里面的toBinaryString()方法,将你的int转换为二进制,这个二进制是String类型的,在调用String里面的getBytes(),这样就可以将int转换为byte[]了,这题就是在玩二进制,知道就行了。

------最佳解决方案--------------------------------------------------------MarshalCopy (IntPtr, Byte[], Int32, Int32)------其他解决方案--------------------------------------------------------转为int 数组倒可以------其他解决方案--------------------------------------------------------指针大小都不明确你转换个P 啊------其他解决方案--------------------------------------------------------引用:C# code1MarshalCopy (IntPtr, Byte[], Int32, Int32)------其他解决方案--------------------------------------------------------引用:转为int 数组倒可以------其他解决方案--------------------------------------------------------------其他解决方案--------------------------------------------------------连String 都能转成Byte[]IntPtr[]也肯定能转成Byte[]的------其他解决方案--------------------------------------------------------引用:

intBytes[0] = (byte) (x >> 24);
intBytes[1] = (byte) (x >> 16);
intBytes[2] = (byte) (x >> 8);
intBytes[3] = (byte) (x >> 0);

b3对应intBytes[0]:
public static int makeInt(byte b3, byte b2, byte b1, byte b0)
{
return (int) ((((b3 & 0xff) << 24) | ((b2 & 0xff) << 16)
| ((b1 & 0xff) << 8) | ((b0 & 0xff) << 0)));
}
#ASP 中用到的数据的型态主要,日期,数字,文字,其他用到的不多


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/13350467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存