Hướng dẫn python convert char to byte - python chuyển đổi char thành byte

Hướng dẫn python convert char to byte - python chuyển đổi char thành byte
Đội câu trả lời giáo dục

Đối tượng byte là một chuỗi các byte. Các đối tượng byte này có thể đọc được máy và có thể được lưu trữ trực tiếp trên đĩa. Các chuỗi, mặt khác, ở dạng người có thể đọc được và cần được mã hóa để chúng có thể được lưu trữ trên một đĩa.byte object is a sequence of bytes. These byte objects are machine-readable and can be directly stored on the disk. Strings, on the other hand, are in human-readable form and need to be encoded so that they can be stored on a disk.

Có một số loại mã hóa khác nhau có thể ánh xạ văn bản vào đĩa. Những cái phổ biến nhất là các kỹ thuật mã hóa ASCII và UTF-8.

Chuyển đổi chuỗi thành byte

Chúng ta có thể sử dụng lớp Bytes tích hợp trong Python để chuyển đổi chuỗi thành byte: chỉ cần chuyển chuỗi làm đầu vào đầu tiên của hàm tạo của lớp byte và sau đó chuyển mã hóa làm đối số thứ hai.

In đối tượng hiển thị một biểu diễn văn bản thân thiện với người dùng, nhưng dữ liệu có trong đó là trong byte.

string = "Hello World"

# string with encoding 'utf-8'

arr = bytes(string, 'utf-8')

arr2 = bytes(string, 'ascii')

print(arr,'\n')

# actual bytes in the the string

for byte in arr:

print(byte, end=' ')

print("\n")

for byte in arr2:

print(byte, end=' ')

THẺ LIÊN QUAN

Python

dây

Byte

đổi

Bản quyền © 2022 Giáo dục, Inc. Tất cả quyền được bảo lưu

Làm cách nào để chuyển đổi một chuỗi thành một byte trong Python?

Chúng ta có thể sử dụng lớp byte tích hợp trong Python để chuyển đổi chuỗi thành byte: chỉ cần chuyển chuỗi làm đầu vào đầu tiên của hàm tạo của lớp byte và sau đó chuyển mã hóa làm đối số thứ hai. In đối tượng hiển thị một biểu diễn văn bản thân thiện với người dùng, nhưng dữ liệu có trong đó là trong byte.
its predecessor. But I don't know how to convert a char into its byte
representation. This is to calculate the nmea checksum for gps data.

Làm thế nào để bạn biến một chuỗi thành một byte?
$GPGSV,3,1,10,06,79,187,39,30,59,098,40,25,51,287, 00,05,25,103,44*
to get the checksum.
Thank you for you help.

Chúng ta có thể sử dụng phương thức chuỗi getBytes () để mã hóa chuỗi thành chuỗi byte bằng cách sử dụng ký tự mặc định của nền tảng. Phương pháp này bị quá tải và chúng ta cũng có thể vượt qua Charset làm đối số.

Có bao nhiêu byte là một char trong Python?

1 byte mỗi char (mã hóa Latin-1)

Xin chào,

Tôi đang cố gắng xor biểu diễn byte của mỗi char trong một chuỗi với người tiền nhiệm của nó. Nhưng tôi không biết làm thế nào để chuyển đổi một char thành đại diện byte của nó. Điều này là để tính toán tổng kiểm tra NMEA cho dữ liệu GPS.

Làm cách nào để chuyển đổi một chuỗi thành một byte trong Python?

Chúng ta có thể sử dụng lớp byte tích hợp trong Python để chuyển đổi chuỗi thành byte: chỉ cần chuyển chuỗi làm đầu vào đầu tiên của hàm tạo của lớp byte và sau đó chuyển mã hóa làm đối số thứ hai. In đối tượng hiển thị một biểu diễn văn bản thân thiện với người dùng, nhưng dữ liệu có trong đó là trong byte.
its predecessor. But I don't know how to convert a char into its byte
representation. This is to calculate the nmea checksum for gps data.

Làm thế nào để bạn biến một chuỗi thành một byte?
$GPGSV,3,1,10,06,79,187,39,30,59,098,40,25,51,287, 00,05,25,103,44*
to get the checksum.
Thank you for you help.

Phil


10 tháng 10 '05 #2

Philipp H. Mohr đã viết:

Tôi đang cố gắng xor biểu diễn byte của mỗi char trong một chuỗi với người tiền nhiệm của nó. Nhưng tôi không biết làm thế nào để chuyển đổi một char thành đại diện byte của nó. ord ('a') == 97; chr (97) == 'a'; "Ord" cung cấp cho bạn giá trị của byte. ví dụ. Tất cả mọi thứ giữa $ và * cần phải là XOR: $ GPGSV, 3,1,10,06,79,187,39,30.59,098,40,25,51,287, 00,05,25,103,44 * để lấy tổng.
its predecessor. But I don't know how to convert a char into its byte
representation. ord('a') == 97; chr(97) == 'a'; "ord" gives you the value of the byte.
e.g. everything between $ and * needs to be xor:
$GPGSV,3,1,10,06,79,187,39,30,59,098,40,25,51,287, 00,05,25,103,44*
to get the checksum.

Có lẽ bạn muốn một mảng byte ở đây, thay vì đi char-by-sar. Thử: Nhập cơ sở mảng = ('$ gpgsv, 3,1,10,06,79,187,39,30,59,098,' '40, 25,51,287,00,05,25,103,44*') .
Try:
import array
base = ('$GPGSV,3,1,10,06,79,187,39,30,59,098,'
'40,25,51,287,00,05,25,103,44*')
bytes = array.array('b', base[1 : -1])
for i in reversed(range(len(bytes))):
bytes[i] ^= bytes[i-1]
result = bytes.tostring()

--Scott David Daniels sc*************@acm.org
sc***********@acm.org

10 tháng 10 '05 #3

Vào ngày 2005-10-10, Larry Bates đã viết:

Tôi đang cố gắng xor biểu diễn byte của mỗi char trong một chuỗi với người tiền nhiệm của nó. Nhưng tôi không biết làm thế nào để chuyển đổi một char thành đại diện byte của nó. Điều này là để tính toán tổng kiểm tra NMEA cho dữ liệu GPS.
its predecessor. But I don't know how to convert a char into its byte
representation. This is to calculate the nmea checksum for gps data.
Ord (c) cung cấp cho bạn biểu diễn thập phân của một nhân vật.

Mặc dù Ord (c) là những gì OP cần, nhưng nó không đưa ra một bản ghi thập phân - mà tôi đoán sẽ là một chuỗi như "65" cho ASCII characer "A". Những gì ord () cung cấp cho bạn là một đối tượng số nguyên với giá trị của ký tự [mà phần cứng lưu trữ trong nhị phân trên tất cả các nền tảng mà tôi biết].
represention -- which I guess would be a string like "65" for
the ASCII characer "A". What ord() gives you is an integer
object with the value of the character [which the hardware
stores in binary on all of the platforms I'm aware of].

- Grant Edwards Grante Yow! Hmmm ... một người hát băm và một anh chàng mắt chéo là Visi.com đang ngủ trên một hòn đảo hoang vắng, khi ...
Grant Edwards grante Yow! Hmmm... A hash-singer
at and a cross-eyed guy were
visi.com SLEEPING on a deserted
island, when...

10 tháng 10 '05 #4

Scott David Daniels đã viết trong tin tức: 43 ********@nntp0.pdx.net:
news:43********@nntp0.pdx.net:

Philipp H. Mohr đã viết:
Tôi đang cố gắng xor biểu diễn byte của mỗi char trong một chuỗi với người tiền nhiệm của nó. Nhưng tôi không biết làm thế nào để chuyển đổi một char thành đại diện byte của nó. ord ('a') == 97; chr (97) == 'a'; "Ord" cung cấp cho bạn giá trị của byte. ví dụ. Tất cả mọi thứ giữa $ và * cần phải là XOR: $ GPGSV, 3,1,10,06,79,187,39,30.59,098,40,25,51,287, 00,05,25,103,44 * để lấy tổng.
string with its predecessor. But I don't know how to convert a
char into its byte representation.

Có lẽ bạn muốn một mảng byte ở đây, thay vì đi char-by-sar. Thử: Nhập cơ sở mảng = ('$ gpgsv, 3,1,10,06,79,187,39,30,59,098,' '40, 25,51,287,00,05,25,103,44*') .
byte.
e.g. everything between $ and * needs to be xor:
$GPGSV,3,1,10,06,79,187,39,30,59,098,40,25,51,287, 00,05,25,
103,44*
to get the checksum.

Có lẽ bạn muốn một mảng byte ở đây, thay vì đi char-by-sar. Thử: Nhập cơ sở mảng = ('$ gpgsv, 3,1,10,06,79,187,39,30,59,098,' '40, 25,51,287,00,05,25,103,44*') .
char-by-char. Try:
import array
base = ('$GPGSV,3,1,10,06,79,187,39,30,59,098,'
'40,25,51,287,00,05,25,103,44*')
bytes = array.array('b', base[1 : -1])
for i in reversed(range(len(bytes))):
bytes[i] ^= bytes[i-1]
result = bytes.tostring()

--Scott David Daniels sc*************@acm.org
sc***********@acm.org

10 tháng 10 '05 #3

Vào ngày 2005-10-10, Larry Bates đã viết:
rzed

Tôi đang cố gắng xor biểu diễn byte của mỗi char trong một chuỗi với người tiền nhiệm của nó. Nhưng tôi không biết làm thế nào để chuyển đổi một char thành đại diện byte của nó. Điều này là để tính toán tổng kiểm tra NMEA cho dữ liệu GPS.

Ord (c) cung cấp cho bạn biểu diễn thập phân của một nhân vật.

Philipp H. Mohr đã viết:
Tôi đang cố gắng xor biểu diễn byte của mỗi char trong một chuỗi với người tiền nhiệm của nó. Nhưng tôi không biết làm thế nào để chuyển đổi một char thành đại diện byte của nó. ord ('a') == 97; chr (97) == 'a'; "Ord" cung cấp cho bạn giá trị của byte. ví dụ. Tất cả mọi thứ giữa $ và * cần phải là XOR: $ GPGSV, 3,1,10,06,79,187,39,30.59,098,40,25,51,287, 00,05,25,103,44 * để lấy tổng.
its predecessor. But I don't know how to convert a char into its byte
representation.

Có lẽ bạn muốn một mảng byte ở đây, thay vì đi char-by-sar. Thử: Nhập cơ sở mảng = ('$ gpgsv, 3,1,10,06,79,187,39,30,59,098,' '40, 25,51,287,00,05,25,103,44*') .
e.g. everything between $ and * needs to be xor:
$GPGSV,3,1,10,06,79,187,39,30,59,098,40,25,51,287, 00,05,25,103,44*
to get the checksum.

Có lẽ bạn muốn một mảng byte ở đây, thay vì đi char-by-sar. Thử: Nhập cơ sở mảng = ('$ gpgsv, 3,1,10,06,79,187,39,30,59,098,' '40, 25,51,287,00,05,25,103,44*') .
Try:
import array
base = ('$GPGSV,3,1,10,06,79,187,39,30,59,098,'
'40,25,51,287,00,05,25,103,44*')
bytes = array.array('b', base[1 : -1])
for i in reversed(range(len(bytes))):
bytes[i] ^= bytes[i-1]
result = bytes.tostring()

--Scott David Daniels sc*************@acm.org

10 tháng 10 '05 #3
assert s[0] == "$"
assert s[-1] == "*"
result = 0
for c in s[1:-1]:
result ^= ord(c)
return result

Vào ngày 2005-10-10, Larry Bates đã viết:

Tôi đang cố gắng xor biểu diễn byte của mỗi char trong một chuỗi với người tiền nhiệm của nó. Nhưng tôi không biết làm thế nào để chuyển đổi một char thành đại diện byte của nó. Điều này là để tính toán tổng kiểm tra NMEA cho dữ liệu GPS.

Ord (c) cung cấp cho bạn biểu diễn thập phân của một nhân vật.

Mặc dù Ord (c) là những gì OP cần, nhưng nó không đưa ra một bản ghi thập phân - mà tôi đoán sẽ là một chuỗi như "65" cho ASCII characer "A". Những gì ord () cung cấp cho bạn là một đối tượng số nguyên với giá trị của ký tự [mà phần cứng lưu trữ trong nhị phân trên tất cả các nền tảng mà tôi biết].
ord(c) is the "decimal" (not hex, not octal) representation of
the ASCII/UNICODE character that is stored in memory location
pointed to by variable c. While the result is an integer (as
it couldn't really be anything else), I believe that most
character charts list the number that ord() returns as the
"decimal representation" of that character (as they normally
also show the octal and hex values as well).

- Grant Edwards Grante Yow! Hmmm ... một người hát băm và một anh chàng mắt chéo là Visi.com đang ngủ trên một hòn đảo hoang vắng, khi ...

10 tháng 10 '05 #4

Scott David Daniels đã viết trong tin tức: 43 ********@nntp0.pdx.net:

Vào ngày 2005-10-10, Larry Bates đã viết:
Tôi đang cố gắng xor biểu diễn byte của mỗi char trong một chuỗi với người tiền nhiệm của nó. Nhưng tôi không biết làm thế nào để chuyển đổi một char thành đại diện byte của nó. Điều này là để tính toán tổng kiểm tra NMEA cho dữ liệu GPS.
its predecessor. But I don't know how to convert a char into its byte
representation. This is to calculate the nmea checksum for gps data.
Ord (c) cung cấp cho bạn biểu diễn thập phân của một nhân vật.

Mặc dù Ord (c) là những gì OP cần, nhưng nó không đưa ra một bản ghi thập phân - mà tôi đoán sẽ là một chuỗi như "65" cho ASCII characer "A". Những gì ord () cung cấp cho bạn là một đối tượng số nguyên với giá trị của ký tự [mà phần cứng lưu trữ trong nhị phân trên tất cả các nền tảng mà tôi biết].
represention -- which I guess would be a string like "65" for
the ASCII characer "A". What ord() gives you is an integer
object with the value of the character [which the hardware
stores in binary on all of the platforms I'm aware of].

- Grant Edwards Grante Yow! Hmmm ... một người hát băm và một anh chàng mắt chéo là Visi.com đang ngủ trên một hòn đảo hoang vắng, khi ...

10 tháng 10 '05 #4

Scott David Daniels đã viết trong tin tức: 43 ********@nntp0.pdx.net:

Grant Edwards đã viết:
Vào ngày 2005-10-10, Larry Bates đã viết:
Tôi đang cố gắng xor biểu diễn byte của mỗi char trong một chuỗi người tiền nhiệm. Nhưng tôi không biết làm thế nào để chuyển đổi một char thành byterepresentation của nó. Điều này là để tính toán tổng kiểm tra NMEA cho dữ liệu GPS.
its predecessor. But I don't know how to convert a char into its byte
representation. This is to calculate the nmea checksum for gps data.
Ord (c) cung cấp cho bạn biểu diễn thập phân của một nhân vật.

Mặc dù Ord (c) là những gì OP cần, nhưng nó không đưa ra một bản ghi thập phân - mà tôi đoán sẽ là một chuỗi như "65" cho ASCII characer "A". Những gì ord () cung cấp cho bạn là một đối tượng số nguyên với giá trị của ký tự [mà phần cứng lưu trữ trong nhị phân trên tất cả các nền tảng mà tôi biết].
represention -- which I guess would be a string like "65" for
the ASCII characer "A". What ord() gives you is an integer
object with the value of the character [which the hardware
stores in binary on all of the platforms I'm aware of].

Tôi đã luôn đọc nó rằng số được trả về bởi ord (c) là biểu diễn "thập phân" (không phải hex, không phải octal) của ký tự ASCII/unicode được lưu trữ trong vị trí bộ nhớ được trỏ bởi biến c. Mặc dù kết quả là một số nguyên (vì nó thực sự không thể là bất cứ điều gì khác), tôi tin rằng hầu hết các biểu đồ nhân vật liệt kê số mà ord () trả về dưới dạng "đại diện thập phân" của nhân vật đó (vì chúng cũng thường hiển thị bát phân và giá trị hex là tốt).
ord(c) is the "decimal" (not hex, not octal) representation of
the ASCII/UNICODE character that is stored in memory location
pointed to by variable c. While the result is an integer (as
it couldn't really be anything else), I believe that most
character charts list the number that ord() returns as the
"decimal representation" of that character (as they normally
also show the octal and hex values as well).

Giá trị được trả về bởi Ord là một số * *. Con số đó có một đại diện thập phân. Nó cũng có một đại diện hex và một đại diện bát phân. Đây là tất cả các chuỗi, và tất cả chúng đại diện cho cùng một số. Bạn không thể in một số - bạn chỉ có thể in các ký tự. Vì vậy, Python (thực sự, hầu hết các ngôn ngữ) dịch số thành một chuỗi các ký tự đại diện cho số, sử dụng biểu diễn thập phân. Bạn có thể sử dụng các bản tích hợp Hex và OCT để yêu cầu các biểu diễn hex và bát phân của số đó và in các chuỗi đó nếu bạn muốn. Có lẽ là một câu trả lời "trường học cũ" về phía tôi.
representation. It also has a hex representation and an octal
representation. These are all strings, and they all represent the same
number. You can't print a number - you can only print characters. So
Python (indeed, most languages) translate the number into a string of
characters that represent the number, using the decimal
representation. You can use the hex and oct builtins to ask for the
hex and octal representations of that number and print those strings
if you want.
Probably an "old school" answer on my part.

Đại diện thập phân của '' là '32'. Python không nghĩ rằng đó là những gì Ord ('') trả về:
that's what ord(' ') returns:

ord ('') == '32' sai

Vì vậy, tôi muốn nói rằng đó là "sai" hơn là trường học cũ.

Mặt khác, nếu bạn kiểm tra ord ('') so với các số, nó không quan tâm đến việc bạn sử dụng đại diện nào, miễn là chúng đại diện cho cùng một số: ord ('') == 0x20 true ord ('') = = 040 Đúng Ord ('') == 32
care what representation you use, so long as they represent the same
number:
ord(' ') == 0x20 True ord(' ') == 040 True ord(' ') == 32

ĐÚNG VẬY

Tất nhiên bạn không thể đọc một số nhiều hơn bạn có thể viết một, vì vậy Python vui lòng dịch các chuỗi đại diện cho các số thành các số khi ITT đọc chúng. Quá trình này thường được gọi là "đọc một số", nhưng những gì thực sự được đọc là các ký tự.
Python kindly translates strings representing numbers into numbers
when itt reads them. This process is often referred to as "reading a
number", but what's actually read is characters.

Đại diện thập phân của '' là '32'. Python không nghĩ rằng đó là những gì Ord ('') trả về:
--
Mike Meyer http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.

11 tháng 10 '05 #8

Chủ đề thảo luận này đã đóng

Câu trả lời đã bị vô hiệu hóa cho cuộc thảo luận này.

Làm thế nào để bạn nhận được một byte từ một char?

Bước 1: Nhận nhân vật.Bước 2: Chuyển đổi ký tự thành chuỗi bằng phương thức toString ().Bước 3: Chuyển đổi chuỗi thành byte bằng phương thức getBytes () [0] và lưu trữ chuỗi được chuyển đổi thành byte.Bước 4: Trả về hoặc thực hiện thao tác trên byte.

Làm cách nào để chuyển đổi một chuỗi thành một byte trong Python?

Chúng ta có thể sử dụng lớp byte tích hợp trong Python để chuyển đổi chuỗi thành byte: chỉ cần chuyển chuỗi làm đầu vào đầu tiên của hàm tạo của lớp byte và sau đó chuyển mã hóa làm đối số thứ hai.In đối tượng hiển thị một biểu diễn văn bản thân thiện với người dùng, nhưng dữ liệu có trong đó là trong byte.pass the string as the first input of the constructor of the Bytes class and then pass the encoding as the second argument. Printing the object shows a user-friendly textual representation, but the data contained in it is​ in bytes.

Làm thế nào để bạn biến một chuỗi thành một byte?

Chúng ta có thể sử dụng phương thức chuỗi getBytes () để mã hóa chuỗi thành chuỗi byte bằng cách sử dụng ký tự mặc định của nền tảng.Phương pháp này bị quá tải và chúng ta cũng có thể vượt qua Charset làm đối số.use String class getBytes() method to encode the string into a sequence of bytes using the platform's default charset. This method is overloaded and we can also pass Charset as argument.

Có bao nhiêu byte là một char trong Python?

1 byte mỗi char (mã hóa Latin-1) per char (Latin-1 encoding)