-1的二进制是1111 1111,不是1000 0001喔,负数的二进制表示为其原码的反码再加1,
大通网站建设公司成都创新互联,大通网站设计制作,有大型网站制作公司丰富经验。已为大通千余家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的大通做网站的公司定做!
正数的反码跟原码不变,而负数的反码除符号位外其他位取反
-1的原码是1000 0001,所以反码为1111 1110,最后在加1即1111 1111
如果二进制1000 0001是一个有符号位的8位数据,那么最高位为符号位,1为负数0为正数
那反过来二进制1000 0001表示成十进制就是减1在取反,
1000 0001 - 1=1000 0000
除符号位取反后为1111 1111即-127
func ByteToBinaryString(data byte) (str string) {
var a byte
for i:=0; i 8; i++ {
a = data
data = 1
data = 1
switch (a) {
case data: str += "0"
default: str += "1"
}
data = 1
}
return str
}
//该代码片段来自于:
使用方法package main
import . "fmt"
func main() {
Printf("[%s][%s][%s][%s]\n",
ByteToBinaryString(byte(0)),ByteToBinaryString(byte(231)),
ByteToBinaryString(byte(168)), ByteToBinaryString(byte(162)))
}
对二进制的文件处理的时候,应该使用FileInputStream和FileOutputStream import java.io.*;
public class LinkFile
{
public static void main(String[] args) throws IOException
{
linkBinaryFile("Idea.jpg");
}
private static void linkBinaryFile(String fileName) throws IOException
{
File imageFile = new File(fileName);
if(!imageFile.exists()!imageFile.canRead())
{
System.out.println("can not read the image or the image file doesn't exists");
System.exit(1);
}
long length = imageFile.length();
int ch = 0;
System.out.println(length);
byte[] buffer = new byte[(int)length/7];
InputStream image = new FileInputStream(imageFile);
File file = new File("hello.jpg");
if(!file.exists())
{
file.createNewFile();
}
FileOutputStream newFile = new FileOutputStream(file,true);
boolean go = true;
while(go)
{
System.out.println("please select how to read the file:\n"+
"1: read()\n2:read(byte[] buffer)\n3:read(byte[] buffer,int off,int len)\n");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
if(line.equals("1"))
{
while((ch = image.read())!=-1)
{
System.out.print(ch);
newFile.write(ch);
}
}
else if(line.equals("2"))
{
while((ch = image.read(buffer))!=-1)
{
System.out.println(ch);
newFile.write(buffer);
}
}
else if(line.equals("3"))
{
while((ch = image.read(buffer,10,500))!=-1)
{
System.out.println(ch);
newFile.write(buffer,10,500);
mac下编译器默认编译的是mac os x的可执行文件。
编译centos上的可执行文件的时候需要交叉编译。
golang的交叉编译很容易,你的情况的话用下面这条命令
GOOS=linux GOARCH=amd64 go build ./文件
//二进制转十六进制func btox(b string) string { base, _ := strconv.ParseInt(b, 2, 10) return strconv.FormatInt(base, 16)}//十六进制转二进制func xtob(x string) string { base, _ := strconv.ParseInt(x, 16, 10) return strconv.Format...