Làm cách nào tôi có thể 'đọc / giải thích' 8 byte dưới dạng int không dấu (Little Endian) ?
Có lẽ có một chuyển đổi ma thuật Bash-fu cho điều này?
CẬP NHẬT:
Có vẻ như một cái gì đó có dây chéo trong việc giải thích câu hỏi của tôi. Đây là một ví dụ rộng hơn về những gì tôi đang cố gắng làm.
Tôi muốn đọc 64k đầu tiên (và cuối cùng) của một tệp. Mỗi từ 8 byte sẽ được hiểu là một số nguyên không dấu Little-Endian 64 bit. Các số nguyên này sẽ được sử dụng trong tính toán băm xác định duy nhất tệp. Vì vậy, có rất nhiều tính toán để thực hiện, ∴ tốc độ được ưa thích, nhưng không quan trọng. (Tại sao tôi lại làm việc đó? Bởi vì smplayer
băm tên các file của mình chơi phương tiện truyền thông .ini, và tôi muốn truy cập và sửa đổi những tập tin này, vì vậy tôi đang bắt chước C ++ của SMPlayer trong Bash.)
Một giải pháp phục vụ cho việc chấp nhận đầu vào có đường ống sẽ là tối ưu và có lẽ là điều cần thiết vì cách các biến Bash không thể xử lý \ x00 ..
Tôi nhận ra rằng một cái gì đó như thế này có lẽ phù hợp hơn với những thứ như Python, Perl và C / C ++, nhưng tôi không biết Python và Perl, và mặc dù tôi có thể làm điều đó trong C ++, đã nhiều năm kể từ khi tôi sử dụng nó và tôi đang cố tập trung vào Bash.
Đoạn ngắn Perl và Python là tốt. Bash được ưa thích (nhưng không phải hy sinh tốc độ).
ö§«¢
không phải là byte; chúng là các ký tự Unicode trên danh nghĩa, sử dụng 8 byte khi được mã hóa bằng UTF-8 và UTF-32 và 16 byte khi được mã hóa bằng UTF-32 .. Như thường gặp trong các trang man, tôi đang đề cập đến các octet 8 bit; chỉ là một Byte 8 bit thông thường đơn giản .. Tôi muốn diễn giải 8 trong số đó là một Big-Endian int 64 bit không dấu