我是Python的新手.在Perl中,要将特定位设置为标量变量(整数),我可以使用vec()如下.
#!/usr/bin/perl -w
$vec = '';
vec($vec, 3, 4) = 1; # bits 0 to 3
vec($vec, 7, 4) = 10; # bits 4 to 7
vec($vec, 11, 4) = 3; # bits 8 to 11
vec($vec, 15, 4) = 15; # bits 12 to 15
print("vec() Has a created a string of nybbles,
in hex: ", unpack("h*", $vec), "\n");
Run Code Online (Sandbox Code Playgroud)
输出:
vec() Has a created a string of nybbles,
in hex: 0001000a0003000f
Run Code Online (Sandbox Code Playgroud)
我想知道如何在Python中实现相同的功能,而无需编写位操作代码并手动使用struct.pack?
小智 0
不确定 vec 函数在 Pearl 中如何工作(尚未使用 vec 函数)。但是,根据您提到的输出,python 中的以下代码工作正常。我不明白第二个论点的意义。要这样调用 vec 函数:vec(value, size)。每次执行此操作时,输出字符串都会连接到全局 Final_str 变量。
final_vec = ''
def vec(value, size):
global final_vec
prefix = ''
str_hex = str(hex(value)).replace('0x','')
str_hex_size = len(str_hex)
for i in range (0, size - str_hex_size):
prefix = prefix + '0'
str_hex = prefix + str_hex
final_vec = final_vec + str_hex
return 0
vec(1, 4)
vec(10, 4)
vec(3, 4)
vec(15, 4)
print(final_vec)
Run Code Online (Sandbox Code Playgroud)