如何读取go中的二进制数据?(智能卡)将代码转换为java
我需要将以下代码转换为Java编程语言。[]字节{}是什么意思?什么是uint8型如何读取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) }
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
。但是两个输出的二进制表示是相同的。有关详细信息,请参阅。我建议您学习围棋教程,这听起来很基本