Tôi đang làm việc với các số trong các cơ sở khác nhau (base-10, base-8, base-16, v.v.). Tôi đang cố đếm số ký tự trong mỗi số.Làm cách nào để đếm số chữ số bằng số trong các căn cứ khác nhau?
Ví dụ
Số:
ABCDEF
Số chữ số:
tôi biết về các phương pháp dựa trên logarit nhưng tôi phải đối mặt với một số vấn đề.
This Python script kết quả đầu ra không thể tính số chính xác trong 3.969 số trong số 1.000.000.
Tôi nghĩ rằng phương pháp sử dụng logarit có thể được khá chậm
Links:
This C program phải rất chậm (nếu tôi có một số lượng rất lớn?). Nó cũng không thể xử lý các số trong các căn cứ khác nhau (ví dụ, base-16).
Không phải là một dupe của this như có OP được hỏi chỉ về cơ sở-10
Edit: chắc chắn tôi có thể tính toán chiều dài của một chuỗi nhưng những gì tôi quan tâm nhất, là nếu có thể thực hiện phép tính mà không có quy ước đối với chuỗi. Tôi muốn biết thuật toán có thể giúp bạn làm điều đó khi biết chỉ cần nguồn cơ sở và cơ sở để chuyển đổi thành.
Edit2:nguồn-base là cơ số 10 và cơ sở để chuyển đổi sang thể được bất kỳ cơ sở khác.
Làm cách nào để tính số chữ số bằng các số khác nhau?
Nếu tôi biết số trong cơ sở-10, làm cách nào để tính số chữ số trong cùng một số được chuyển đổi thành cơ sở-16 (base-8, v.v.) mà không thực hiện chuyển đổi?
Note: một số Python hoặc C mã sẽ được rất nhiều đánh giá cao
Chỉ cần một ý tưởng trước khi viết cho bạn một câu trả lời hoàn toàn, nên một phương pháp thỏa mãn bạn: tìm n cần thiết để có ví dụ 16^n> your_number> 16^n, vì số lượng chữ số sẽ giống như n ... –
Bạn có yêu cầu chúng tôi cách gỡ lỗi tập lệnh Python của bạn không? – abarnert
@EmmanuelJay, tôi nghĩ rằng bất kỳ phương pháp nào đủ nhanh đều phù hợp. – ForceBru