gpt4 book ai didi

mysql - MySQL 可以输出与 perl 打包整数等效的值吗?

转载 作者:行者123 更新时间:2023-11-29 06:37:57 26 4
gpt4 key购买 nike

我试图将 MySQL 表中的列中的数据直接提取到二进制文件中,该文件是一系列打包的无符号整数(每个 4 字节),可以使用 perl unpack 函数读取。我如何读取这些数据的一个愚蠢的例子是

#!/usr/bin/env perl
my $input_file = 'packed_int_test_file_04';
open my $fh, '<:raw', $input_file
or die "Couldn't open $input_file for binary read: $!";

my $position = 0;
my $four_byte_buffer;
while ( read($fh, $four_byte_buffer, 4) ) {
my $foo_val = unpack("I", $four_byte_buffer);
print("Foo val at position $position is $foo_val \n");
$position++;
}

# OUTPUT:
# Foo val at position 0 is 1
# Foo val at position 1 is 2
# Foo val at position 2 is 3
# Foo val at position 3 is 4
# Foo val at position 4 is 5
# Foo val at position 5 is 6

我希望我可以直接从 MySQL 生成数据文件,如下所示(但我没有运气)

select (cast foo_val_integer as binary(4)) 
from bar_table
into outfile 'packed_int_test_file_04'
FIELDS terminated by ''
LINES terminated by '';

有没有办法让 MySQL 直接将 4 字节打包的无符号整数序列输出到 Perl 可以读取的二进制文件中?

最佳答案

解包“I”所需的格式因构建而异。我相信您正在尝试获取以下格式之一:

  • 32 位大端无符号整数(例如 0x12345678 打包为 12 34 56 78)

    使用以可移植方式解压

    unpack 'L>'

    打包使用

    CHAR(
    ( i >> 24 ) & 0xFF,
    ( i >> 16 ) & 0xFF,
    ( i >> 8 ) & 0xFF,
    ( i >> 0 ) & 0xFF
    )
  • 32 位小端无符号整数(例如 0x12345678 打包为 78 56 34 12)

    使用以可移植方式解压

    unpack 'L<'

    打包使用

    CHAR(
    ( i >> 0 ) & 0xFF,
    ( i >> 8 ) & 0xFF,
    ( i >> 16 ) & 0xFF,
    ( i >> 24 ) & 0xFF
    )

关于mysql - MySQL 可以输出与 perl 打包整数等效的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52937471/

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