gpt4 book ai didi

byte - Raku 中的 `bytes.fromhex` 和 `to_bytes` 方法?

转载 作者:行者123 更新时间:2023-12-04 11:24:28 25 4
gpt4 key购买 nike

我有一个 Python3 函数,它结合了两个 bytes , 一次使用 bytes.fromhex()方法,其他使用 to_bytes()方法:

from datatime import datetime

def bytes_add() -> bytes:
bytes_a = bytes.fromhex('6812')
bytes_b = datetime.now().month.to_bytes(1, byteorder='little', signed=False)
return bytes_a + bytes_b
是否可以在 Raku 中编写与上述相同的函数?(如果可以,如何控制 byteordersigned 参数?)
至于 byteorder , 说转换号码 1024bytes在 Python 中:
(1024).to_bytes(2, byteorder='little') # Output: b'\x00\x04', byte 00 is before byte 04
作为对比,转换数字 1024BufBlob在乐:
buf16.new(1024) # Output: Buf[uint16]:0x<0400>, byte 00 is after byte 04
有什么办法可以得到 Buf[uint16]:0x<0004>在上面的 Raku 示例中?
更新 :
灵感来自 代码段 ,我试图找出一个类似于 的解决方案代码段的回答:
sub bytes_add() {
my $bytes_a = pack("H*", '6812');
my $bytes_b = buf16.new(DateTime.now.month);
$bytes_a ~ $bytes_b;
}
但是还是不知道怎么用 byteorder .

最佳答案

Is it possible to write a same function as above in Raku?


是的。我不是 100% 确定我理解您提供的功能的总体目标,但是文字/逐行翻译肯定是可能的。如果您想详细说明目标,也可以以更简单/更惯用的方式实现相同的目标。
这是逐行翻译:
sub bytes-add(--> Blob) {
my $bytes-a = Blob(<68 12>);
my $bytes-b = Blob(DateTime.now.month);
Blob(|$bytes-a, |$bytes-b)
}
bytes-add的输出默认情况下使用其十六进制表示形式 ( Blob:0x<44 0C 09> ) 打印。如果你想像 Python 打印它的字节文字一样打印它,你可以用 bytes-add».chr.raku 来实现。 ,打印为 ("D", "\x[C]", "\t") .

if so, How to control byteorder?


因为上面的代码构造了 Blob来自 List ,您可以简单地 .reverse列表使用相反的顺序。

关于byte - Raku 中的 `bytes.fromhex` 和 `to_bytes` 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69086801/

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