2010-12-10 35 views
11

Tlv là gì?tlv (giá trị độ dài của thẻ) là gì?

Để đặt các móc (hàm) trong mã thay vì nếu/else?

nếu tôi có một đoạn mã chạy trên các nền tảng khác nhau, tại các vị trí khác nhau trong mã, tôi có thể đặt móc chức năng tlv để xác định nền tảng nào tôi đang làm và thực hiện tương ứng? Hay đại loại thế?

lợi ích có thể là mã sạch hơn? dễ bảo trì? Khi một nền tảng mới được thêm vào, chỉ mã tlv cần thay đổi chứ không phải mã nguồn?

Tôi có thể hoàn toàn sai ở đây.

+1

Không có gì liên quan đến mã và mọi thứ liên quan đến dữ liệu. –

+0

@karl: (Tôi biết đây là một chủ đề cũ, nhưng bằng cách nào đó tôi đã hạ cánh ở đây ngày hôm nay một lần nữa :)) Bạn có chắc chắn rằng điều này không có gì để làm với mã? Bởi vì tôi đoán cách khác của nó xung quanh - tất cả về mã và không có gì về dữ liệu. : D – hari

Trả lời

19

TLV là mã hóa giá trị độ dài thẻ. Thường thì nó được gọi là tốt hơn bởi tên ban đầu của nó, loại-length-value.

Trường đầu tiên là "loại" dữ liệu đang được xử lý, trường thứ hai chỉ định "độ dài" của giá trị, trường thứ ba chứa lượng dữ liệu "dài" biểu thị giá trị cho "loại".

Nhiều phần dữ liệu có thể được truyền trong cùng một thông điệp bằng cách nối thêm ba phần vào một thông báo trước đó.

There's a page on wikipedia covering it in just a little more detail. Tuy nhiên, đừng nhầm lẫn, mỗi bộ ba là một mô tả "cấp cao nhất", thường không làm tổ các mục trong TLV (mặc dù bạn có thể tìm ra cách để làm như vậy bằng cách mã hóa ba số TLV trong thẻ V của một thẻ khác).

+0

Cảm ơn Edwin. Tôi đang tìm kiếm chính xác nhu cầu và ưu/khuyết điểm của nó. Nếu bạn biết ví dụ nào, hãy cho tôi biết. – hari

+0

Những thuận lợi là nó là một định dạng đơn giản chết (dễ phân tích, bạn có thể bỏ qua các trường mới được thêm vào trong các chương trình cũ). Nhược điểm là định dạng đơn giản chết (không hỗ trợ phân cấp dựng sẵn, mã hóa nhị phân kém, kiểu dữ liệu phải được biết trước cả hai bên hoặc truyền theo cách mã hóa tùy chỉnh, hỗ trợ rất kém khi dữ liệu thay đổi theo thời gian không phụ gia nhưng thay thế, vv). Một số nhược điểm này có thể sửa chữa được, giống như bạn có thể mã hóa nhị phân để truyền nó, nhưng đó chỉ là công việc nhiều hơn để de-uuencode ở đầu kia. –

+1

Trên thực tế bạn * có thể đặt nhiều TLV hơn bên trong các TLV khác: bit thứ 6 của byte thứ nhất của trường _type_ trong cấu trúc TLV, nếu được đặt thành 1, có nghĩa là _constructed_, cho biết phần _v_ của cấu trúc TLV thực sự là một tập hợp các TLV khác. –

1

Tôi nghĩ rằng những gì bạn đang đề cập đến được gọi là LoạiChiều dàiValue, và có một wikipedia page cho nó. Hy vọng rằng sẽ giúp.

10

TLV là cách lưu trữ dữ liệu để tạo điều kiện phân tích nhanh dữ liệu đó.

Thông thường, bạn đọc loại (thẻ), độ dài và giá trị và sau đó gửi dữ liệu đó đến một hàm xử lý. Chức năng xử lý này chỉ có chức năng sẽ được xử lý loại X. Sau đó, bạn đọc loại tiếp theo, đó là chiều dài và giá trị và gửi nó đến bộ xử lý thích hợp.

Nó thường được sử dụng như một cách dễ dàng để xử lý dữ liệu mà không cần phải trả thêm phí.

+1

C'mon mọi người, khi bạn downvote, cho tôi biết lý do tại sao (đặc biệt là 2 năm sau khi thực tế) – KevinDTimm

3

TLV đề cập đến giá trị mã hóa trong bộ ba Giá trị loại dài và more general form is documented on WikiPedia này.

Trong một số ngữ cảnh (chẳng hạn như EMV) TLV đề cập đến số more specific X.690 which is also documented on WikiPedia.

TLV có những ưu điểm sau:

  • định dạng mã hóa tương đối nhỏ gọn
  • Tương đối đơn giản để phân tích cú pháp (Tôi đã viết một phân tích cú pháp X.690 cơ bản trong một vài giờ)
  • Các X.690 TLV có hỗ trợ cho các loại lồng nhau (phần này hơi phức tạp hơn để phân tích cú pháp, nhưng từ những gì tôi có thể nói là không bắt buộc đối với EMV)

Bất lợi lớn nhất của TLV là nó không trực tiếp là huma n có thể đọc được. Tuy nhiên, lưu ý rằng nếu dữ liệu được chuyển đổi sang hex thì nó chỉ khó đọc một cách vừa phải.

5

Chúng tôi vẫn sử dụng TLV để định dạng dữ liệu. Và nếu chúng tôi muốn gửi dữ liệu đến người nhận, chúng tôi sẽ chuẩn bị gói TLV có chứa dữ liệu Thẻ giá trị dài. Ví dụ;

Data Tag = DF 82 0A 
Data Length = 03 
Data Value = 30 31 32. 

khi chúng tôi muốn gửi, chúng tôi nối dữ liệu 3 hàng này như DF 82 0A 03 30 31 32. Gói dữ liệu có thể chứa nhiều dữ liệu như vậy.

Khi người nhận nhận được, phân tích cú pháp gói rất dễ dàng và người nhận có thể phân tích tất cả dữ liệu trơn tru.

0

TLV: thẻ - chiều dài - Giá trị

VÍ DỤ: 045002124354

Nếu chúng ta mất như ví dụ mà trong cấu hình: 045 là ý nghĩa của
số chiến thắng trong một chương trình truyền hình như vậy: giá trị số chiến thắng là: 12

  • TAG: Tìm kiếm của thẻ đó là: 045
  • LENGTH: chiều dài ví dụ là trên 3 vị trí như vậy: 002
  • GIÁ TRỊ: Bây giờ giá trị là: (trên 2 vị trí)
0

TLV rất hữu ích để tạo ra các giao thức truyền thông. Bạn sử dụng thẻ , độ dài, giá trị để lưu trữ thông tin. Bạn có thể thấy rất beautifull triển khai (Tôi nghĩ là tốt nhất) on github.

Các vấn đề liên quan