Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何读取go中的二进制数据?(智能卡)将代码转换为java_Java_Go - Fatal编程技术网

如何读取go中的二进制数据?(智能卡)将代码转换为java

如何读取go中的二进制数据?(智能卡)将代码转换为java,java,go,Java,Go,我需要将以下代码转换为Java编程语言。[]字节{}是什么意思?什么是uint8型 func int8ToByte(int_val int) byte { buf := new(bytes.Buffer) err := binary.Write(buf, binary.LittleEndian, uint8(int_val)) if err != nil { log.Fatal("binary.Write failed:", err) }

我需要将以下代码转换为Java编程语言。[]字节{}是什么意思?什么是uint8型

func int8ToByte(int_val int) byte {
    buf := new(bytes.Buffer)
    err := binary.Write(buf, binary.LittleEndian, uint8(int_val))
    if err != nil {
        log.Fatal("binary.Write failed:", err)
    }
    return buf.Bytes()[0]
}

[]字节{}
是一个创建空字节片(类型为
[]字节
)的。
uint8
类型是大小为1字节的无符号整数类型。在Go中,
byte
类型是
uint8
的别名,因此
byte
uint8
是等效的,完全可以互换

我不知道是谁编写了
int8ToByte()
函数,但这似乎是一个混淆。它所做的只是返回其参数的最低有效字节,这只不过是一个简单的从
int
byte

byte(int_val)
 public static void main(String []args){
    int i = 0x01;
    System.out.println((byte)i);
    i = 0x0102;
    System.out.println((byte)i);
    i = -1;
    System.out.println((byte)i + " " + String.format("%x", (byte)i));
 }
请参见以下示例:

func main() {
    fmt.Println(int8ToByte(0x01))
    fmt.Println(int8ToByte(0x0102))
    fmt.Println(int8ToByte(-1))

    var i int
    i = 0x01
    fmt.Println(byte(i))
    i = 0x0102
    fmt.Println(byte(i))
    i = -1
    fmt.Println(byte(i))
}

func int8ToByte(int_val int) byte {
    buf := new(bytes.Buffer)
    err := binary.Write(buf, binary.LittleEndian, uint8(int_val))
    if err != nil {
        log.Fatal("binary.Write failed:", err)
    }
    return buf.Bytes()[0]
}
它输出(在屏幕上试用):

为了在Java中实现同样的效果,您只需将
int
数字转换为
字节

byte(int_val)
 public static void main(String []args){
    int i = 0x01;
    System.out.println((byte)i);
    i = 0x0102;
    System.out.println((byte)i);
    i = -1;
    System.out.println((byte)i + " " + String.format("%x", (byte)i));
 }
这将产生:

1
2
-1 ff

请注意区别:Java的
字节是有符号的,它的有效范围是
-128..127
,而Go的
字节是无符号的,它的有效范围是
0..255
。但是两个输出的二进制表示是相同的。有关详细信息,请参阅。

我建议您学习围棋教程,这听起来很基本