gpt4 book ai didi

Golang 按位运算以及一般字节操作

转载 作者:IT王子 更新时间:2023-10-29 01:23:24 26 4
gpt4 key购买 nike

我有一些 c# 代码可以对一个字节执行一些按位运算。我正尝试在 golang 中做同样的事情,但遇到了困难。

C# 示例

byte a, c;
byte[] data;
int j;
c = data[j];
c = (byte)(c + j);
c ^= a;
c ^= 0xFF;
c += 0x48;

我看过golang不能对byte类型进行按位运算。因此,我是否必须将我的代码修改为 uint8 类型才能执行这些操作?如果是这样,是否有一种干净、正确/标准的方法来实现它?

最佳答案

Go 当然可以对byte 类型进行按位运算,这只是uint8 的别名。我必须对您的代码进行的唯一更改是:

  1. 变量声明的语法
  2. 在将 j 添加到 c 之前将 j 转换为 byte,因为 Go 在进行算术运算时缺少(按设计)整数提升转换。<
  3. 删除分号。

给你

var a, c byte
var data []byte
var j int
c = data[j]
c = c + byte(j)
c ^= a
c ^= 0xFF
c += 0x48

如果您打算按位执行 - 而不是在 Go 中,请注意该运算符是 ^,而不是大多数其他当代编程中使用的 ~语言。这是用于 xor 的相同运算符,但两者并没有歧义,因为编译器可以通过确定 ^ 是用作一元运算符还是二元运算符来判断哪个是哪个。

关于Golang 按位运算以及一般字节操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24105938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com